{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Tensorflow基础"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(60000, 28, 28) (60000, 10)\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "from tensorflow.keras import layers,optimizers,datasets\n",
    "\n",
    "#读取数据\n",
    "(x, y), (x_val, y_val) = datasets.mnist.load_data()\n",
    "x = x*tf.convert_to_tensor(x, dtype=tf.float32)/255.-1   #转换为张量\n",
    "y = tf.convert_to_tensor(y, dtype=tf.int32)\n",
    "y = tf.one_hot(y, depth=10)   # one-hot编码\n",
    "print(x.shape, y.shape)\n",
    "\n",
    "train_dataset = tf.data.Dataset.from_tensor_slices((x, y))  #构建数据集对象\n",
    "train_dataset = train_dataset.batch(512) #批量训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "#网络搭建\n",
    "model = keras.Sequential([\n",
    "    layers.Dense(256, activation='relu'),\n",
    "    layers.Dense(128, activation='relu'),\n",
    "    layers.Dense(10,)\n",
    "])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "ename": "InvalidArgumentError",
     "evalue": "Value for attr 'TI' of float is not in the list of allowed values: uint8, int32, int64\n\t; NodeDef: {{node OneHot}}; Op<name=OneHot; signature=indices:TI, depth:int32, on_value:T, off_value:T -> output:T; attr=axis:int,default=-1; attr=T:type; attr=TI:type,default=DT_INT64,allowed=[DT_UINT8, DT_INT32, DT_INT64]> [Op:OneHot]",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mInvalidArgumentError\u001b[0m                      Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-3-8d75247a72d8>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      3\u001b[0m     \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m28\u001b[0m\u001b[1;33m*\u001b[0m\u001b[1;36m28\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m     \u001b[0mout\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m     \u001b[0my_onehot\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mone_hot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdepth\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m10\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      6\u001b[0m     \u001b[0mloss\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msquare\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mout\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0my_onehot\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      7\u001b[0m     \u001b[0mloss\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreduce_sum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mloss\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m/\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Program Files\\anaconda\\lib\\site-packages\\tensorflow\\python\\util\\dispatch.py\u001b[0m in \u001b[0;36mwrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m    199\u001b[0m     \u001b[1;34m\"\"\"Call target, and fall back on dispatchers if there is a TypeError.\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    200\u001b[0m     \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 201\u001b[1;33m       \u001b[1;32mreturn\u001b[0m \u001b[0mtarget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    202\u001b[0m     \u001b[1;32mexcept\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mTypeError\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    203\u001b[0m       \u001b[1;31m# Note: convert_to_eager_tensor currently raises a ValueError, not a\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Program Files\\anaconda\\lib\\site-packages\\tensorflow\\python\\ops\\array_ops.py\u001b[0m in \u001b[0;36mone_hot\u001b[1;34m(indices, depth, on_value, off_value, axis, dtype, name)\u001b[0m\n\u001b[0;32m   4121\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   4122\u001b[0m     return gen_array_ops.one_hot(indices, depth, on_value, off_value, axis,\n\u001b[1;32m-> 4123\u001b[1;33m                                  name)\n\u001b[0m\u001b[0;32m   4124\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   4125\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Program Files\\anaconda\\lib\\site-packages\\tensorflow\\python\\ops\\gen_array_ops.py\u001b[0m in \u001b[0;36mone_hot\u001b[1;34m(indices, depth, on_value, off_value, axis, name)\u001b[0m\n\u001b[0;32m   6311\u001b[0m       \u001b[1;32mreturn\u001b[0m \u001b[0m_result\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   6312\u001b[0m     \u001b[1;32mexcept\u001b[0m \u001b[0m_core\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_NotOkStatusException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 6313\u001b[1;33m       \u001b[0m_ops\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraise_from_not_ok_status\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   6314\u001b[0m     \u001b[1;32mexcept\u001b[0m \u001b[0m_core\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_FallbackException\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   6315\u001b[0m       \u001b[1;32mpass\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Program Files\\anaconda\\lib\\site-packages\\tensorflow\\python\\framework\\ops.py\u001b[0m in \u001b[0;36mraise_from_not_ok_status\u001b[1;34m(e, name)\u001b[0m\n\u001b[0;32m   6841\u001b[0m   \u001b[0mmessage\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmessage\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m\" name: \"\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mname\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;34m\"\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   6842\u001b[0m   \u001b[1;31m# pylint: disable=protected-access\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 6843\u001b[1;33m   \u001b[0msix\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraise_from\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcore\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_status_to_exception\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcode\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmessage\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   6844\u001b[0m   \u001b[1;31m# pylint: enable=protected-access\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   6845\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Program Files\\anaconda\\lib\\site-packages\\six.py\u001b[0m in \u001b[0;36mraise_from\u001b[1;34m(value, from_value)\u001b[0m\n",
      "\u001b[1;31mInvalidArgumentError\u001b[0m: Value for attr 'TI' of float is not in the list of allowed values: uint8, int32, int64\n\t; NodeDef: {{node OneHot}}; Op<name=OneHot; signature=indices:TI, depth:int32, on_value:T, off_value:T -> output:T; attr=axis:int,default=-1; attr=T:type; attr=TI:type,default=DT_INT64,allowed=[DT_UINT8, DT_INT32, DT_INT64]> [Op:OneHot]"
     ]
    }
   ],
   "source": [
    "#模型训练\n",
    "with tf.GradientTape() as tape:\n",
    "    x = tf.reshape(x, (-1, 28*28))\n",
    "    out = model(x)\n",
    "    y_onehot = tf.one_hot(y, depth=10)\n",
    "    loss = tf.square(out-y_onehot)\n",
    "    loss = tf.reduce_sum(loss) / x.shape[0]\n",
    "    grade = tape.gradient(loss, model, trainable_variables)\n",
    "    optimizer.apply_gradients(zip(grads, model.trainable_variables))\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tf.Tensor(1, shape=(), dtype=int32)\n",
      "\n",
      "tf.Tensor([1.], shape=(1,), dtype=float32)\n",
      "\n",
      "tf.Tensor(\n",
      "[[1. 2.]\n",
      " [2. 4.]], shape=(2, 2), dtype=float32)\n",
      "\n",
      "tf.Tensor(\n",
      "[[[1 2]\n",
      "  [3 4]]\n",
      "\n",
      " [[5 6]\n",
      "  [7 8]]], shape=(2, 2, 2), dtype=int32)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "#数值类型\n",
    "#标量： 单个实数\n",
    "a = tf.constant(1)\n",
    "print (a)\n",
    "print ()\n",
    "\n",
    "#向量：维数为1，长度不定\n",
    "a = tf.constant([1.])\n",
    "print(a)\n",
    "print ()\n",
    "\n",
    "#矩阵:m行𝑛列实数的有序集合\n",
    "a = tf.constant([[1.,2], [2,4.]])\n",
    "print(a)\n",
    "print ()\n",
    "\n",
    "#张量：维数大于2的数组\n",
    "a = tf.constant([[[1,2],[3,4]],[[5,6],[7,8]]])\n",
    "print(a)\n",
    "print ()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tf.Tensor(b'Hello , Deep Learning.', shape=(), dtype=string)\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(), dtype=string, numpy=b'hello , deep learning.'>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#字符串类型\n",
    "a = tf.constant('Hello , Deep Learning.')\n",
    "print(a)\n",
    "print()\n",
    "\n",
    "tf.strings.lower(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tf.Tensor(True, shape=(), dtype=bool)\n",
      "tf.Tensor([ True False], shape=(2,), dtype=bool)\n",
      "False\n",
      "tf.Tensor(True, shape=(), dtype=bool)\n"
     ]
    }
   ],
   "source": [
    "#布尔类型\n",
    "a = tf.constant(True)\n",
    "print(a)\n",
    "\n",
    "#布尔类型向量\n",
    "a = tf.constant([True, False])\n",
    "print(a)\n",
    "\n",
    "#TensorFlow 的布尔类型和 Python 语言的布尔类型并不等价，不能通用\n",
    "a = tf.constant(True)\n",
    "print(a is True)      #类型不相等\n",
    "print(a == True)      #数值相等"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tf.Tensor(24910, shape=(), dtype=int16)\n",
      "tf.Tensor(12345678, shape=(), dtype=int32)\n",
      "3.141592653589793\n",
      "tf.Tensor(3.1415927, shape=(), dtype=float32)\n",
      "tf.Tensor(3.141592653589793, shape=(), dtype=float64)\n"
     ]
    }
   ],
   "source": [
    "#数值精度\n",
    "'''对于数值类型的张量，可以保存为不同字节长度的精度，如浮点数 3.14 既可以保存为\n",
    "16 位(Bit)长度，也可以保存为 32 位甚至 64 位的精度。位越长，精度越高，同时占用的内\n",
    "存空间也就越大。常用的精度类型有 tf.int16、tf.int32、tf.int64、tf.float16、tf.float32、\n",
    "tf.float64 等，其中 tf.float64 即为 tf.double。'''\n",
    "\n",
    "a = tf.constant(12345678, dtype=tf.int16)\n",
    "b = tf.constant(12345678, dtype=tf.int32)\n",
    "\n",
    "print(a)   #精度过小，发生溢出\n",
    "print(b)\n",
    "\n",
    "#一般使用int32、int64、float32.\n",
    "\n",
    "import numpy as np\n",
    "print(np.pi)\n",
    "\n",
    "print(tf.constant(np.pi, dtype=tf.float32))\n",
    "print(tf.constant(np.pi, dtype=tf.float64))\n",
    "\n",
    "# tf.int32 和 tf.float32 可满足大部分场合的运算精度要求"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "before: <dtype: 'int16'>\n",
      "after: <dtype: 'float32'>\n"
     ]
    }
   ],
   "source": [
    "#读取精度\n",
    "print('before:', a.dtype)\n",
    "if a.dtype != tf.float32:\n",
    "    a = tf.cast(a, tf.float32)   #tf.cast可用完成精度转换\n",
    "print('after:',a.dtype)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tf.Tensor(3.140625, shape=(), dtype=float64)\n",
      "tf.Tensor(24910, shape=(), dtype=int16)\n",
      "tf.Tensor([1 0], shape=(2,), dtype=int32)\n",
      "tf.Tensor([ True False  True  True], shape=(4,), dtype=bool)\n"
     ]
    }
   ],
   "source": [
    "#类型转换\n",
    "#精度转换\n",
    "a = tf.constant(np.pi, dtype=tf.float16)\n",
    "print(tf.cast(a,tf.double))\n",
    "\n",
    "#高精度转低精度会出现数据溢出\n",
    "a = tf.constant(12345678, dtype=tf.int32)\n",
    "print(tf.cast(a, tf.int16))\n",
    "\n",
    "#布尔类型转整型\n",
    "a = tf.constant([True, False])\n",
    "print(tf.cast(a, tf.int32))   \n",
    "\n",
    "#整型转布尔类型， 0为False,非零为True\n",
    "a = tf.constant([-1, 0, 1, 2])\n",
    "print(tf.cast(a, tf.bool))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 待优化张量——变量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "('Variable:0', True)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "#训练过程中，需不断变化的值，如参数w,b等等，可声明为变量\n",
    "a = tf.constant([-1, 0, 1, 2])\n",
    "aa = tf.Variable(a)   #张量转变量\n",
    "aa.name, aa.trainable\n",
    "\n",
    "#name为tensorflow自身维护，无需管理，trainable为当前变量是否可修改，默认是。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Variable 'Variable:0' shape=(2, 2) dtype=float32, numpy=\n",
       "array([[ 1.,  9.],\n",
       "       [ 8., 10.]], dtype=float32)>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#直接创建变量\n",
    "a = tf.Variable([[1.,9],[8,10]])\n",
    "a"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 创建张量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2,), dtype=float32, numpy=array([1., 2.], dtype=float32)>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#从列表到张量\n",
    "tf.convert_to_tensor([1,2.])   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 2), dtype=float64, numpy=\n",
       "array([[1., 2.],\n",
       "       [3., 4.]])>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#从数组到张量\n",
    "tf.convert_to_tensor(np.array([[1,2.],[3,4]]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(<tf.Tensor: shape=(), dtype=float32, numpy=0.0>,\n",
       " <tf.Tensor: shape=(), dtype=float32, numpy=1.0>)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#创建全0或全1张量\n",
    "tf.zeros([]),tf.ones([])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(<tf.Tensor: shape=(2, 2), dtype=float32, numpy=\n",
       " array([[0., 0.],\n",
       "        [0., 0.]], dtype=float32)>,\n",
       " <tf.Tensor: shape=(3, 2), dtype=float32, numpy=\n",
       " array([[1., 1.],\n",
       "        [1., 1.],\n",
       "        [1., 1.]], dtype=float32)>)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#创建全0或全1矩阵\n",
    "tf.zeros([2,2]),tf.ones([3,2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 3), dtype=float32, numpy=\n",
       "array([[0., 0., 0.],\n",
       "       [0., 0., 0.]], dtype=float32)>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#创建与目标张量shape相同的全0或全1矩阵\n",
    "a = tf.ones([2,3])\n",
    "tf.zeros_like(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 3), dtype=float32, numpy=\n",
       "array([[0., 0., 0.],\n",
       "       [0., 0., 0.]], dtype=float32)>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.zeros(a.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(), dtype=int32, numpy=-1>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#创建自定义数值张量\n",
    "tf.fill([],-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 2), dtype=int32, numpy=\n",
       "array([[-1, -1],\n",
       "       [-1, -1]])>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#创建自定义数值张量\n",
    "tf.fill([2,2],-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 2), dtype=float32, numpy=\n",
       "array([[ 1.6491823, -1.2270422],\n",
       "       [ 4.9148793, -2.634313 ]], dtype=float32)>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#创建已知分布的张量\n",
    "#正态分布  tf.random.normal(shape, mean=0.0, stddev=1.0)\n",
    "tf.random.normal([2,2],mean=1,stddev=2)  #均值为1，标志差为2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 2), dtype=float32, numpy=\n",
       "array([[9.74436 , 9.631963],\n",
       "       [9.155297, 3.176713]], dtype=float32)>"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#均匀分布  tf.random.uniform(shape, minval=0, maxval=None, dtype=tf.float32)可以创建采样自[minval,maxval)区间的均匀分布的张量   默认【0，1】\n",
    "tf.random.uniform([2,2],maxval=10)   #取值范围【0，10】"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(10,), dtype=int32, numpy=array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])>"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#创建序列\n",
    "tf.range(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(5,), dtype=int32, numpy=array([0, 2, 4, 6, 8])>"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.range(10,delta=2)   #[0,1]，步长为2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(5,), dtype=int32, numpy=array([1, 3, 5, 7, 9])>"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.range(1,10,delta=2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 张量的典型应用"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "#标量： 训练过程中的损失值，误差等等，每次迭代训练都会进行改变。\n",
    "out = tf.random.uniform([4,10])\n",
    "y = tf.constant([2,3,2,0])\n",
    "y = tf.one_hot(y, depth=10)\n",
    "loss = tf.keras.losses.mse(y, out)\n",
    "loss = tf.reduce_mean(loss)   #损失值，为标量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "#向量： 神经网络模型中的参数一般为向量，如y=wx + b, w、b为向量\n",
    "z = tf.random.uniform([4,2])\n",
    "b = tf.zeros([2])   #创建偏置矩阵\n",
    "z = z + b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 3), dtype=float32, numpy=\n",
       "array([[0.19833976, 0.19833976, 0.19833976],\n",
       "       [4.316566  , 4.316566  , 4.316566  ]], dtype=float32)>"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#矩阵： 全连接层的输入张量即为矩阵\n",
    "x = tf.random.normal([2,4])\n",
    "w = tf.ones([4,3])\n",
    "b = tf.zeros([3])\n",
    "o = x@w + b     #矩阵点乘运算\n",
    "o"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 索引与切片"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "#索引\n",
    "x = tf.random.normal([4,32,32,3])   #4张照片"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(32, 32, 3), dtype=float32, numpy=\n",
       "array([[[-1.3785778 ,  0.5257423 , -0.48643732],\n",
       "        [-1.3832178 , -0.3961536 , -1.9420807 ],\n",
       "        [ 0.98288566, -1.8003815 , -0.62231946],\n",
       "        ...,\n",
       "        [ 1.8867905 , -0.9399987 , -0.9443049 ],\n",
       "        [-0.8492396 ,  0.86625624,  0.13060355],\n",
       "        [ 0.46600536,  0.29557085,  0.61792064]],\n",
       "\n",
       "       [[-0.06095201, -0.5603473 , -1.2283106 ],\n",
       "        [ 1.5540671 ,  0.36394072,  0.00611873],\n",
       "        [ 0.86688584,  0.40354866,  0.85897696],\n",
       "        ...,\n",
       "        [ 1.6530955 ,  1.3588597 ,  0.02398907],\n",
       "        [ 0.32097018, -0.6657414 ,  0.9915284 ],\n",
       "        [-0.40798298,  0.86782324,  0.49244642]],\n",
       "\n",
       "       [[-0.32989803,  0.0456937 , -0.999071  ],\n",
       "        [-0.3327787 ,  2.0568612 ,  0.63302803],\n",
       "        [-0.7829776 , -0.54642755,  0.63988376],\n",
       "        ...,\n",
       "        [-1.0280322 ,  0.42063394, -0.8878016 ],\n",
       "        [-0.5560516 , -0.32302353, -1.1003907 ],\n",
       "        [-0.04790923, -0.599318  , -0.2987099 ]],\n",
       "\n",
       "       ...,\n",
       "\n",
       "       [[ 0.01874479, -0.1737383 , -0.93128884],\n",
       "        [ 1.0343556 , -1.4945786 , -0.6744724 ],\n",
       "        [-0.10888504, -0.04809396,  1.3635664 ],\n",
       "        ...,\n",
       "        [ 0.6998054 , -0.01516814, -0.8319049 ],\n",
       "        [ 0.91807497,  0.63644254,  1.1282189 ],\n",
       "        [-0.3811714 , -0.21715543,  1.5981628 ]],\n",
       "\n",
       "       [[-0.97484523, -0.20620303,  1.214921  ],\n",
       "        [ 1.755236  , -0.16544415,  0.3156593 ],\n",
       "        [ 0.47529286,  0.2495349 ,  0.2383838 ],\n",
       "        ...,\n",
       "        [ 1.7583592 ,  0.42680866,  1.7671223 ],\n",
       "        [ 0.81986636, -0.85295904,  0.5588376 ],\n",
       "        [ 1.4574642 , -1.4142338 ,  1.301777  ]],\n",
       "\n",
       "       [[-1.056406  ,  1.1594645 ,  1.0979589 ],\n",
       "        [ 0.554628  ,  0.35301605, -2.018786  ],\n",
       "        [ 0.17670536,  1.4456196 , -0.12759548],\n",
       "        ...,\n",
       "        [ 2.1809585 ,  0.68058157,  0.45027903],\n",
       "        [-1.374595  ,  0.06831361, -1.6763841 ],\n",
       "        [ 1.7455162 ,  0.6688276 ,  0.67175865]]], dtype=float32)>"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x[0]  #查看第一张照片数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(32, 3), dtype=float32, numpy=\n",
       "array([[-0.06095201, -0.5603473 , -1.2283106 ],\n",
       "       [ 1.5540671 ,  0.36394072,  0.00611873],\n",
       "       [ 0.86688584,  0.40354866,  0.85897696],\n",
       "       [ 1.6271528 , -0.42702323,  0.13237926],\n",
       "       [-1.2756255 , -0.23866485,  0.67869216],\n",
       "       [-1.4169328 , -0.1794356 ,  1.0111675 ],\n",
       "       [-0.6100266 , -0.6153268 ,  0.05190742],\n",
       "       [-0.4032582 ,  2.1745532 ,  0.41594887],\n",
       "       [-0.31342998, -0.40727198,  0.66098124],\n",
       "       [ 1.4119093 , -0.4616375 ,  0.65918803],\n",
       "       [-2.0612276 , -1.4181492 ,  0.183753  ],\n",
       "       [ 0.7816631 ,  1.9307452 ,  1.2957907 ],\n",
       "       [ 0.41697103,  0.81385523, -1.0368078 ],\n",
       "       [ 0.50980866, -0.10333604,  0.5316918 ],\n",
       "       [ 0.8744447 , -1.7650303 ,  0.67935026],\n",
       "       [ 0.29518193, -1.9467261 ,  1.3687348 ],\n",
       "       [ 1.4101174 , -1.1968291 ,  0.44095886],\n",
       "       [ 0.6556094 ,  1.6842896 ,  2.2128503 ],\n",
       "       [ 0.38596326,  0.01137415, -0.30817413],\n",
       "       [-0.33906063,  1.2737749 , -1.6297487 ],\n",
       "       [-1.886473  ,  0.04107502,  0.3009639 ],\n",
       "       [-0.3772492 ,  0.7444652 , -1.0932381 ],\n",
       "       [-0.7931279 ,  0.60706437, -0.49244726],\n",
       "       [-1.2584336 ,  0.15165015, -2.165293  ],\n",
       "       [ 1.0946288 ,  0.21455947, -0.34187445],\n",
       "       [ 1.6727703 ,  0.26167184, -1.1001362 ],\n",
       "       [ 0.81865543, -0.82282585, -0.39274332],\n",
       "       [-0.6175565 ,  0.49870595, -1.7726351 ],\n",
       "       [-1.1399344 , -0.4664089 ,  1.0379648 ],\n",
       "       [ 1.6530955 ,  1.3588597 ,  0.02398907],\n",
       "       [ 0.32097018, -0.6657414 ,  0.9915284 ],\n",
       "       [-0.40798298,  0.86782324,  0.49244642]], dtype=float32)>"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x[0][1]  #查看第一张，第二行照片数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(<tf.Tensor: shape=(3,), dtype=float32, numpy=array([0.86688584, 0.40354866, 0.85897696], dtype=float32)>,\n",
       " <tf.Tensor: shape=(3,), dtype=float32, numpy=array([0.86688584, 0.40354866, 0.85897696], dtype=float32)>)"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x[0][1][2],x[0,1,2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 32, 32, 3), dtype=float32, numpy=\n",
       "array([[[[ 1.24043739e+00,  2.33688831e+00,  2.77064502e-01],\n",
       "         [ 1.67277396e-01,  6.97548270e-01,  1.21834195e+00],\n",
       "         [-6.03112459e-01, -1.02657115e+00, -9.50173199e-01],\n",
       "         ...,\n",
       "         [ 1.12176216e+00, -2.25828934e+00, -6.17938399e-01],\n",
       "         [-1.34568021e-01, -1.07020032e+00,  4.49936211e-01],\n",
       "         [-2.77791113e-01,  1.31754982e+00,  2.62828732e+00]],\n",
       "\n",
       "        [[-3.94654244e-01, -8.73305440e-01, -8.44007850e-01],\n",
       "         [ 4.03472424e-01, -2.02121353e+00, -8.68105173e-01],\n",
       "         [ 2.50249743e-01, -7.69804180e-01,  6.07974052e-01],\n",
       "         ...,\n",
       "         [ 1.52527440e+00,  1.80665433e-01,  1.05045617e+00],\n",
       "         [ 1.08066738e+00,  8.75741541e-01,  2.03070819e-01],\n",
       "         [ 1.72614172e-01, -1.62062395e+00,  5.28316379e-01]],\n",
       "\n",
       "        [[ 1.04442370e+00, -6.32301211e-01,  1.45856357e+00],\n",
       "         [-2.71820296e-02,  1.48961091e+00, -9.11533594e-01],\n",
       "         [ 2.39505753e-01, -6.18037224e-01, -9.82060373e-01],\n",
       "         ...,\n",
       "         [ 4.23330933e-01,  5.06990254e-01,  3.15975845e-01],\n",
       "         [-8.76635909e-02, -3.78957480e-01,  1.40901506e+00],\n",
       "         [-3.55526388e-01, -2.51477182e-01, -1.34417367e+00]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[-1.04237807e+00,  1.62797308e+00,  1.25090516e+00],\n",
       "         [-2.79154444e+00, -3.33357006e-01, -7.17805564e-01],\n",
       "         [ 2.07349348e+00,  1.67289901e+00,  2.30021030e-01],\n",
       "         ...,\n",
       "         [ 8.91942680e-01, -6.97425008e-01,  7.58643210e-01],\n",
       "         [ 7.67906904e-02,  1.01863301e+00, -1.22544944e+00],\n",
       "         [ 2.27028638e-01, -1.11833429e+00,  1.77523398e+00]],\n",
       "\n",
       "        [[-8.68577540e-01, -6.85618579e-01,  2.21151397e-01],\n",
       "         [-1.11321521e+00, -1.96708596e+00, -5.66720128e-01],\n",
       "         [-3.88021022e-01, -6.58489287e-01, -1.72498608e+00],\n",
       "         ...,\n",
       "         [ 1.72784352e+00,  1.90813735e-01,  1.86775744e-01],\n",
       "         [-6.90560639e-01,  6.70081317e-01,  1.59150946e+00],\n",
       "         [ 2.56078482e-01, -1.76935327e+00, -2.67184794e-01]],\n",
       "\n",
       "        [[ 1.85702395e+00,  7.14026764e-02, -1.39133561e+00],\n",
       "         [ 4.12777334e-01, -1.15679193e+00, -2.12373696e-02],\n",
       "         [ 1.89551318e+00,  1.09041727e+00, -1.40704918e+00],\n",
       "         ...,\n",
       "         [-2.60274577e+00, -2.20871544e+00, -1.69752300e+00],\n",
       "         [-2.02168036e+00, -7.62469172e-01,  7.88669229e-01],\n",
       "         [ 8.97116959e-01, -3.66438866e-01, -3.93459916e-01]]],\n",
       "\n",
       "\n",
       "       [[[-7.17859089e-01, -1.24585807e+00, -1.12394869e+00],\n",
       "         [ 9.44465339e-01,  4.13627811e-02,  1.05317128e+00],\n",
       "         [ 7.32132375e-01,  7.83725679e-02,  3.01220231e-02],\n",
       "         ...,\n",
       "         [-1.03056514e+00, -1.01156437e+00,  3.09240162e-01],\n",
       "         [-1.67466998e+00,  2.79972074e-03, -1.80908072e+00],\n",
       "         [-4.53745633e-01, -3.16172726e-02,  1.10317655e-01]],\n",
       "\n",
       "        [[-5.09931087e-01, -3.42457712e-01,  7.46901035e-01],\n",
       "         [ 6.87292039e-01, -5.42897999e-01, -1.25874147e-01],\n",
       "         [-6.60447001e-01, -1.63674283e+00,  1.05356753e+00],\n",
       "         ...,\n",
       "         [-6.74413145e-01, -2.38059655e-01, -1.80557370e+00],\n",
       "         [ 5.33125818e-01,  1.44981146e+00,  2.66388506e-01],\n",
       "         [-5.30780315e-01,  8.28510344e-01,  1.14502765e-01]],\n",
       "\n",
       "        [[-2.25236923e-01,  2.62165129e-01,  1.47189343e+00],\n",
       "         [-2.69220187e-03, -6.61325634e-01,  3.66189182e-02],\n",
       "         [ 1.09868355e-01,  1.06418729e+00, -6.52805269e-01],\n",
       "         ...,\n",
       "         [ 7.53751546e-02, -8.82778943e-01,  1.80124545e+00],\n",
       "         [ 1.41579378e+00, -5.09481788e-01,  5.03552735e-01],\n",
       "         [ 8.53862882e-01,  1.39686239e+00,  7.08206475e-01]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[ 3.43152076e-01,  3.18596959e-02,  9.46565151e-01],\n",
       "         [ 1.21611571e+00, -1.34104431e+00, -5.95192850e-01],\n",
       "         [ 1.27787101e+00, -7.91889429e-02,  6.05273247e-01],\n",
       "         ...,\n",
       "         [-3.63189429e-01, -8.22332680e-01,  1.99886084e-01],\n",
       "         [ 1.47628129e+00, -1.36768758e+00, -7.24452496e-01],\n",
       "         [ 1.18797421e+00, -1.43942922e-01, -1.02473497e-01]],\n",
       "\n",
       "        [[ 8.15299332e-01, -9.47845101e-01, -1.30513704e+00],\n",
       "         [ 3.34424496e-01,  3.10944051e-01,  3.19864690e-01],\n",
       "         [-1.10936975e+00,  4.82550830e-01,  8.95720497e-02],\n",
       "         ...,\n",
       "         [ 1.52738035e+00, -5.05454838e-01, -1.69808269e+00],\n",
       "         [-1.52800949e-02,  1.69628060e+00,  9.60260987e-01],\n",
       "         [-2.54610837e-01, -1.02210581e+00, -5.77777803e-01]],\n",
       "\n",
       "        [[ 1.86286330e+00, -6.14127338e-01,  2.24142241e+00],\n",
       "         [-1.00234509e+00,  3.38194102e-01,  6.50178969e-01],\n",
       "         [-1.14327574e+00, -6.22147858e-01,  1.85929048e+00],\n",
       "         ...,\n",
       "         [ 5.25746763e-01,  5.26373446e-01, -9.53845739e-01],\n",
       "         [ 8.45424011e-02, -1.55965388e+00, -3.80477868e-02],\n",
       "         [-3.64345163e-01,  1.34401858e+00,  6.27262831e-01]]]],\n",
       "      dtype=float32)>"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#切片\n",
    "x[1:3]   #查看第二张至第三张图片数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(32, 32, 3), dtype=float32, numpy=\n",
       "array([[[-1.3785778 ,  0.5257423 , -0.48643732],\n",
       "        [-1.3832178 , -0.3961536 , -1.9420807 ],\n",
       "        [ 0.98288566, -1.8003815 , -0.62231946],\n",
       "        ...,\n",
       "        [ 1.8867905 , -0.9399987 , -0.9443049 ],\n",
       "        [-0.8492396 ,  0.86625624,  0.13060355],\n",
       "        [ 0.46600536,  0.29557085,  0.61792064]],\n",
       "\n",
       "       [[-0.06095201, -0.5603473 , -1.2283106 ],\n",
       "        [ 1.5540671 ,  0.36394072,  0.00611873],\n",
       "        [ 0.86688584,  0.40354866,  0.85897696],\n",
       "        ...,\n",
       "        [ 1.6530955 ,  1.3588597 ,  0.02398907],\n",
       "        [ 0.32097018, -0.6657414 ,  0.9915284 ],\n",
       "        [-0.40798298,  0.86782324,  0.49244642]],\n",
       "\n",
       "       [[-0.32989803,  0.0456937 , -0.999071  ],\n",
       "        [-0.3327787 ,  2.0568612 ,  0.63302803],\n",
       "        [-0.7829776 , -0.54642755,  0.63988376],\n",
       "        ...,\n",
       "        [-1.0280322 ,  0.42063394, -0.8878016 ],\n",
       "        [-0.5560516 , -0.32302353, -1.1003907 ],\n",
       "        [-0.04790923, -0.599318  , -0.2987099 ]],\n",
       "\n",
       "       ...,\n",
       "\n",
       "       [[ 0.01874479, -0.1737383 , -0.93128884],\n",
       "        [ 1.0343556 , -1.4945786 , -0.6744724 ],\n",
       "        [-0.10888504, -0.04809396,  1.3635664 ],\n",
       "        ...,\n",
       "        [ 0.6998054 , -0.01516814, -0.8319049 ],\n",
       "        [ 0.91807497,  0.63644254,  1.1282189 ],\n",
       "        [-0.3811714 , -0.21715543,  1.5981628 ]],\n",
       "\n",
       "       [[-0.97484523, -0.20620303,  1.214921  ],\n",
       "        [ 1.755236  , -0.16544415,  0.3156593 ],\n",
       "        [ 0.47529286,  0.2495349 ,  0.2383838 ],\n",
       "        ...,\n",
       "        [ 1.7583592 ,  0.42680866,  1.7671223 ],\n",
       "        [ 0.81986636, -0.85295904,  0.5588376 ],\n",
       "        [ 1.4574642 , -1.4142338 ,  1.301777  ]],\n",
       "\n",
       "       [[-1.056406  ,  1.1594645 ,  1.0979589 ],\n",
       "        [ 0.554628  ,  0.35301605, -2.018786  ],\n",
       "        [ 0.17670536,  1.4456196 , -0.12759548],\n",
       "        ...,\n",
       "        [ 2.1809585 ,  0.68058157,  0.45027903],\n",
       "        [-1.374595  ,  0.06831361, -1.6763841 ],\n",
       "        [ 1.7455162 ,  0.6688276 ,  0.67175865]]], dtype=float32)>"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x[0,::]  #读取第一张照片数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(4, 14, 14, 3), dtype=float32, numpy=\n",
       "array([[[[-1.37857783e+00,  5.25742292e-01, -4.86437321e-01],\n",
       "         [ 9.82885659e-01, -1.80038154e+00, -6.22319460e-01],\n",
       "         [ 2.38130912e-02,  8.49914908e-01,  8.76690269e-01],\n",
       "         ...,\n",
       "         [ 2.16272473e+00, -1.69633353e+00, -1.21295822e+00],\n",
       "         [ 3.68896872e-02, -2.39447936e-01,  1.03575635e+00],\n",
       "         [-6.39440715e-01,  2.32063341e+00,  3.47439259e-01]],\n",
       "\n",
       "        [[-3.29898030e-01,  4.56936955e-02, -9.99071002e-01],\n",
       "         [-7.82977581e-01, -5.46427548e-01,  6.39883757e-01],\n",
       "         [ 1.36955512e+00,  1.18907940e+00, -6.01922572e-01],\n",
       "         ...,\n",
       "         [-8.39474857e-01, -8.55179280e-02,  2.66772151e-01],\n",
       "         [ 1.84145713e+00, -5.11796653e-01,  3.11757624e-01],\n",
       "         [-2.50122517e-01, -2.06529951e+00, -1.43688634e-01]],\n",
       "\n",
       "        [[-1.38175380e+00,  1.45266667e-01, -6.89771295e-01],\n",
       "         [ 1.87913108e+00, -3.40796143e-01, -3.60141277e-01],\n",
       "         [ 1.34579730e+00,  1.15310395e+00, -2.17079390e-02],\n",
       "         ...,\n",
       "         [ 5.33534050e-01,  1.69163477e+00,  5.16735204e-02],\n",
       "         [ 1.13822591e+00, -3.63046736e-01, -4.60954756e-01],\n",
       "         [-3.21857810e-01,  1.13672256e+00, -1.32821691e+00]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[-1.17805946e+00,  1.01249778e+00,  1.83143294e+00],\n",
       "         [-5.65176845e-01, -3.54522794e-01, -1.63267124e-02],\n",
       "         [ 1.78840548e-01, -2.00099617e-01,  4.88711119e-01],\n",
       "         ...,\n",
       "         [ 1.71820092e+00, -1.07729626e+00,  6.41175687e-01],\n",
       "         [ 4.91560072e-01,  8.95757914e-01, -1.42632321e-01],\n",
       "         [ 3.81642133e-01,  2.59346277e-01,  1.31542599e+00]],\n",
       "\n",
       "        [[ 1.06298614e+00, -1.37502325e+00,  5.63189447e-01],\n",
       "         [-1.01672935e+00, -1.66217148e+00, -6.91221535e-01],\n",
       "         [ 3.62018228e-01, -3.84194404e-01, -4.44307655e-01],\n",
       "         ...,\n",
       "         [ 8.05905104e-01,  1.86745971e-01, -1.07594275e+00],\n",
       "         [-2.25299999e-01, -1.35088325e+00, -3.51398706e-01],\n",
       "         [-2.17034984e+00,  9.98171031e-01, -1.16062097e-01]],\n",
       "\n",
       "        [[ 8.23016107e-01, -3.11556220e-01, -2.11627722e-01],\n",
       "         [ 1.34671107e-01, -7.68245339e-01,  5.42951114e-02],\n",
       "         [-9.86224413e-01, -4.96116459e-01,  3.08341950e-01],\n",
       "         ...,\n",
       "         [-4.65850413e-01, -1.12986743e+00, -4.93847430e-01],\n",
       "         [-3.05696666e-01,  4.91903365e-01, -4.03035074e-01],\n",
       "         [-4.67049293e-02,  7.17547596e-01,  2.25801516e+00]]],\n",
       "\n",
       "\n",
       "       [[[ 1.24043739e+00,  2.33688831e+00,  2.77064502e-01],\n",
       "         [-6.03112459e-01, -1.02657115e+00, -9.50173199e-01],\n",
       "         [ 9.24557924e-01, -9.02619720e-01, -9.37034607e-01],\n",
       "         ...,\n",
       "         [ 8.04134130e-01,  7.47615337e-01, -1.34324715e-01],\n",
       "         [ 2.37403199e-01, -1.81250358e+00,  8.68611693e-01],\n",
       "         [-9.09372985e-01,  8.50997269e-01, -1.29043472e+00]],\n",
       "\n",
       "        [[ 1.04442370e+00, -6.32301211e-01,  1.45856357e+00],\n",
       "         [ 2.39505753e-01, -6.18037224e-01, -9.82060373e-01],\n",
       "         [-6.79378569e-01, -7.31326401e-01,  2.49443024e-01],\n",
       "         ...,\n",
       "         [ 2.92789459e-01,  2.00096536e+00,  9.85978842e-02],\n",
       "         [-1.52130008e-01, -3.04162413e-01,  9.71435189e-01],\n",
       "         [ 1.06149554e+00, -1.97495446e-02, -1.69711888e-01]],\n",
       "\n",
       "        [[-6.71234131e-01, -3.41968685e-01, -1.45866573e+00],\n",
       "         [ 4.99562532e-01, -2.04891586e+00, -6.00661695e-01],\n",
       "         [-3.75840098e-01, -2.16820979e+00,  1.69059753e+00],\n",
       "         ...,\n",
       "         [ 1.98042548e+00,  1.69935918e+00,  3.58159900e-01],\n",
       "         [ 1.32878888e+00,  9.65069175e-01,  7.03827560e-01],\n",
       "         [-5.52086055e-01,  7.84485698e-01, -1.02608621e-01]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[-1.35650420e+00,  3.01079571e-01,  3.02098691e-02],\n",
       "         [ 1.24955797e+00,  3.93408418e-01,  4.85360175e-01],\n",
       "         [ 2.57402301e+00, -1.10802996e+00, -6.14094794e-01],\n",
       "         ...,\n",
       "         [-1.77177191e-02, -3.11877012e-01,  7.96176910e-01],\n",
       "         [-5.07845521e-01, -1.67258632e+00,  4.61368591e-01],\n",
       "         [-4.27605152e-01, -1.54340208e-01, -2.56163883e+00]],\n",
       "\n",
       "        [[-6.92711532e-01,  9.68247890e-01,  4.64573145e-01],\n",
       "         [-1.11623347e+00, -3.72511446e-01, -5.68501651e-01],\n",
       "         [-4.51816283e-02,  4.19124007e-01, -6.90204129e-02],\n",
       "         ...,\n",
       "         [-8.93445432e-01,  4.13929015e-01,  3.52485299e-01],\n",
       "         [ 1.50100708e+00,  1.12095603e-03,  7.18717456e-01],\n",
       "         [ 1.84687626e+00, -9.21646476e-01,  6.02240145e-01]],\n",
       "\n",
       "        [[ 1.52103889e+00, -1.24884701e+00, -1.20381832e+00],\n",
       "         [-1.37944631e-02,  8.29059660e-01,  1.27562270e-01],\n",
       "         [ 5.22652268e-01,  4.93033469e-01, -2.47872453e-02],\n",
       "         ...,\n",
       "         [ 7.31902242e-01, -1.10484324e-01, -2.46911228e-01],\n",
       "         [ 5.24932325e-01, -1.37923288e+00, -2.53457379e+00],\n",
       "         [-7.60993004e-01,  9.89715338e-01,  1.32280242e+00]]],\n",
       "\n",
       "\n",
       "       [[[-7.17859089e-01, -1.24585807e+00, -1.12394869e+00],\n",
       "         [ 7.32132375e-01,  7.83725679e-02,  3.01220231e-02],\n",
       "         [-1.36324775e+00,  6.20242774e-01, -4.27044965e-02],\n",
       "         ...,\n",
       "         [-4.14045304e-01, -9.88869190e-01, -2.00114727e+00],\n",
       "         [ 3.09403747e-01, -2.70992011e-01,  6.94566131e-01],\n",
       "         [ 1.15880620e+00, -9.93538439e-01, -7.24637985e-01]],\n",
       "\n",
       "        [[-2.25236923e-01,  2.62165129e-01,  1.47189343e+00],\n",
       "         [ 1.09868355e-01,  1.06418729e+00, -6.52805269e-01],\n",
       "         [ 1.42847970e-01, -1.40276587e+00, -1.18873072e+00],\n",
       "         ...,\n",
       "         [-7.83525825e-01, -1.29808292e-01,  1.48848891e+00],\n",
       "         [ 1.26553386e-01, -1.66830218e+00, -7.89233625e-01],\n",
       "         [ 5.75277656e-02, -5.20253360e-01, -2.57965803e+00]],\n",
       "\n",
       "        [[-2.24751279e-01, -5.16834080e-01, -2.64551520e-01],\n",
       "         [ 1.26342690e+00,  3.62425178e-01, -3.54119092e-01],\n",
       "         [-4.72705245e-01,  1.22583246e+00,  1.64551067e+00],\n",
       "         ...,\n",
       "         [ 2.39135146e-01,  1.13988018e+00, -6.17820919e-01],\n",
       "         [-7.32855320e-01,  2.02633882e+00,  5.11260368e-02],\n",
       "         [-1.03483200e+00, -1.06242096e+00,  5.44488244e-02]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[ 6.13331869e-02,  1.06426448e-01, -1.26923585e+00],\n",
       "         [-9.28256512e-01,  5.04901819e-02, -1.06026804e+00],\n",
       "         [ 5.21353185e-01,  6.03061318e-01, -2.05137992e+00],\n",
       "         ...,\n",
       "         [-2.34194875e-01, -1.20841034e-01,  1.55823541e+00],\n",
       "         [ 6.09261766e-02,  8.12736869e-01, -1.91733062e-01],\n",
       "         [ 7.63029397e-01,  1.11334972e-01,  6.95651054e-01]],\n",
       "\n",
       "        [[-9.12723124e-01, -8.06902230e-01,  2.40659684e-01],\n",
       "         [-1.26422310e+00,  1.53998303e+00, -6.29061386e-02],\n",
       "         [-1.29240707e-01,  1.88632473e-01, -5.30762792e-01],\n",
       "         ...,\n",
       "         [-7.78560638e-01,  1.42618704e+00,  1.22500725e-01],\n",
       "         [ 5.00403345e-01,  8.08394670e-01,  1.16186249e+00],\n",
       "         [-8.61037374e-01,  1.01151764e+00, -1.60839999e+00]],\n",
       "\n",
       "        [[-1.51355481e+00, -5.16870975e-01, -1.02760577e+00],\n",
       "         [-2.12050128e+00, -4.05826896e-01, -3.53257924e-01],\n",
       "         [-5.54762423e-01, -1.71601844e+00,  2.20813394e+00],\n",
       "         ...,\n",
       "         [ 6.16463602e-01,  1.98609576e-01, -9.08265471e-01],\n",
       "         [ 3.10439408e-01, -1.36974737e-01, -4.80855435e-01],\n",
       "         [ 2.24137545e-01, -2.43444875e-01, -7.34769762e-01]]],\n",
       "\n",
       "\n",
       "       [[[-1.12494886e+00, -2.14697218e+00,  7.04581290e-02],\n",
       "         [ 5.57686806e-01, -1.60326147e+00,  7.56112516e-01],\n",
       "         [-1.60657001e+00,  1.37275726e-01, -1.08777833e+00],\n",
       "         ...,\n",
       "         [-2.02910423e+00,  6.94286764e-01,  8.10642719e-01],\n",
       "         [-1.74312580e+00,  3.26645255e-01,  4.81778234e-01],\n",
       "         [ 7.35960007e-01,  7.19738364e-01,  2.15618461e-02]],\n",
       "\n",
       "        [[ 4.01690528e-02, -4.20493633e-01, -3.97385061e-01],\n",
       "         [-3.64759490e-02, -2.60588348e-01, -1.31059632e-01],\n",
       "         [ 2.08389506e-01, -3.19264621e-01, -4.54057932e-01],\n",
       "         ...,\n",
       "         [ 6.77074552e-01, -8.87224615e-01, -1.29631773e-01],\n",
       "         [ 4.07291092e-02,  1.12029910e-01, -4.62848991e-01],\n",
       "         [ 9.75640044e-02,  2.03918862e+00,  1.38830900e+00]],\n",
       "\n",
       "        [[ 2.14618251e-01, -3.33707273e-01,  1.22616649e+00],\n",
       "         [ 5.81741631e-01, -2.79559404e-01, -1.10836744e+00],\n",
       "         [-1.04820572e-01, -1.27524436e-01,  1.64385125e-01],\n",
       "         ...,\n",
       "         [-1.11462474e+00, -2.24590033e-01,  1.51108265e-01],\n",
       "         [-1.16474044e+00,  1.11707854e+00, -9.93843853e-01],\n",
       "         [ 8.22177291e-01,  2.66341567e-01,  9.12770391e-01]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[-3.31659615e-01, -1.15272951e+00, -4.21110541e-01],\n",
       "         [-3.22934330e-01, -1.58516452e-01, -1.06807575e-02],\n",
       "         [ 5.89646101e-01, -7.42759481e-02,  1.11045349e+00],\n",
       "         ...,\n",
       "         [-4.39508319e-01, -4.31704707e-02,  3.21039140e-01],\n",
       "         [ 1.17071021e+00,  1.37339878e+00, -9.77852046e-01],\n",
       "         [-4.17608947e-01,  1.12702596e+00,  4.51544791e-01]],\n",
       "\n",
       "        [[-1.44991517e-01,  4.20609176e-01, -7.25305557e-01],\n",
       "         [ 3.70658875e-01,  1.42504060e+00,  9.47747588e-01],\n",
       "         [-1.29290843e+00, -3.49206418e-01, -1.85542595e+00],\n",
       "         ...,\n",
       "         [ 1.26908922e+00,  4.74675387e-01, -2.29573202e+00],\n",
       "         [ 8.90282154e-01,  7.78841913e-01,  7.19565153e-02],\n",
       "         [-3.29535574e-01, -1.69524932e+00, -7.10269250e-03]],\n",
       "\n",
       "        [[-1.80661991e-01, -6.96962237e-01, -4.36068058e-01],\n",
       "         [-1.32569492e+00,  6.09184504e-01,  2.79360861e-01],\n",
       "         [-2.23821020e+00, -9.07045901e-01, -5.33874929e-01],\n",
       "         ...,\n",
       "         [ 3.48390251e-01,  1.73197544e+00,  2.55248308e-01],\n",
       "         [ 7.59049833e-01, -3.26508075e-01, -1.49131477e+00],\n",
       "         [ 8.08318377e-01, -3.64285499e-01,  5.81011832e-01]]]],\n",
       "      dtype=float32)>"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x[:,0:28:2,0:28:2,:]  #读取所有照片的0~28行列步长为2的数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(8,), dtype=int32, numpy=array([8, 7, 6, 5, 4, 3, 2, 1])>"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#序列逆序\n",
    "x = tf.range(9)\n",
    "x[8:0:-1]   #从8取到0，逆序排列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(9,), dtype=int32, numpy=array([8, 7, 6, 5, 4, 3, 2, 1, 0])>"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x[::-1]  #序列全部逆序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(5,), dtype=int32, numpy=array([8, 6, 4, 2, 0])>"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x[::-2]  #逆序间隔采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(16, 16, 3), dtype=float32, numpy=\n",
       "array([[[-1.21394861e+00,  3.65026575e-03, -1.31220138e+00],\n",
       "        [ 2.44655341e-01,  4.79052037e-01, -7.64749348e-01],\n",
       "        [ 6.22567013e-02,  1.10259128e+00,  2.30772614e-01],\n",
       "        [ 1.46490383e+00,  7.84695804e-01,  4.08674747e-01],\n",
       "        [ 1.34425223e+00, -1.78577602e-01, -9.24165361e-03],\n",
       "        [ 1.10380507e+00, -3.43278080e-01,  4.36984777e-01],\n",
       "        [-7.73903668e-01, -1.53284013e-01, -4.94057685e-01],\n",
       "        [-3.08586240e-01,  5.55039167e-01, -3.06192130e-01],\n",
       "        [-6.10750020e-01, -1.23717523e+00,  5.91124237e-01],\n",
       "        [-1.81957245e+00, -3.19346815e-01,  1.03200793e-01],\n",
       "        [-6.38114393e-01, -5.63081503e-01,  1.52249300e+00],\n",
       "        [-2.80576408e-01,  2.33619064e-01,  7.49331415e-01],\n",
       "        [-3.48108840e+00, -3.26068211e+00, -1.82280019e-01],\n",
       "        [-1.04428267e+00, -4.28382903e-01, -8.50763321e-01],\n",
       "        [ 7.64968812e-01,  1.40382099e+00, -1.38316946e-02],\n",
       "        [ 1.21165089e-01, -5.58117926e-02,  2.41621301e-01]],\n",
       "\n",
       "       [[ 9.32314456e-01,  2.87494659e+00, -7.37180173e-01],\n",
       "        [ 2.84031391e+00, -1.48741615e+00,  2.85311844e-02],\n",
       "        [-1.85189828e-01,  8.77640545e-02, -1.04155231e+00],\n",
       "        [ 3.01768005e-01,  2.41435051e-01, -6.08263433e-01],\n",
       "        [ 5.26061594e-01, -8.53320897e-01,  8.45318019e-01],\n",
       "        [-9.09677029e-01,  8.98395777e-01, -5.03918603e-02],\n",
       "        [-2.03822827e+00, -3.50625545e-01, -1.06591368e+00],\n",
       "        [ 5.34654975e-01, -1.21510632e-01, -1.00291109e+00],\n",
       "        [ 8.92496854e-02, -1.44423413e+00, -4.90391642e-01],\n",
       "        [-1.51241624e+00, -6.72910333e-01, -3.16810369e-01],\n",
       "        [ 1.27342129e+00,  3.37941408e-01, -7.30442166e-01],\n",
       "        [-8.16179395e-01,  7.57754326e-01,  1.33562362e+00],\n",
       "        [-3.83076578e-01,  1.63731635e+00, -1.27885973e+00],\n",
       "        [-1.00239420e+00,  2.13785529e+00, -1.46639216e+00],\n",
       "        [-7.98317909e-01, -4.27787572e-01,  6.80488527e-01],\n",
       "        [-5.05999982e-01, -1.15287912e+00,  1.88397837e+00]],\n",
       "\n",
       "       [[-1.48991930e+00,  3.47965717e-01, -8.60416353e-01],\n",
       "        [ 2.60415375e-02, -7.24013150e-01, -1.65813327e-01],\n",
       "        [-8.60897779e-01,  1.43166304e+00,  2.67832011e-01],\n",
       "        [ 2.02222466e+00,  4.89155114e-01,  8.99142861e-01],\n",
       "        [ 1.87399411e+00, -7.36426190e-02,  3.01934361e-01],\n",
       "        [ 1.48139775e+00, -1.70562255e+00,  9.56650153e-02],\n",
       "        [-5.28512716e-01,  1.26559591e+00, -2.84349412e-01],\n",
       "        [ 1.13173091e+00,  6.11068547e-01,  4.46331918e-01],\n",
       "        [-1.73988676e+00,  8.80348444e-01,  9.06980574e-01],\n",
       "        [ 4.33457077e-01, -9.81985390e-01, -9.07749832e-01],\n",
       "        [ 2.68041462e-01, -1.55367100e+00,  3.06069732e-01],\n",
       "        [-7.93129504e-01, -6.16510868e-01, -4.03587818e-01],\n",
       "        [ 1.03431642e+00,  1.77365407e-01, -2.50210971e-01],\n",
       "        [ 5.74217737e-01,  1.03384387e+00,  1.59182775e+00],\n",
       "        [ 8.93514812e-01,  1.86026007e-01,  1.51284766e+00],\n",
       "        [ 4.05308381e-02,  5.11302531e-01,  8.21384266e-02]],\n",
       "\n",
       "       [[ 1.16716361e+00, -9.07695759e-03,  1.13159943e+00],\n",
       "        [ 5.98290443e-01, -4.18484747e-01, -4.01812166e-01],\n",
       "        [ 1.47834957e+00,  2.09240347e-01, -1.72954604e-01],\n",
       "        [-2.21592069e+00,  5.53024784e-02,  6.73187673e-01],\n",
       "        [-7.32757077e-02,  1.15043414e+00, -8.34048986e-02],\n",
       "        [ 5.03901727e-02,  1.22877605e-01,  5.91549873e-01],\n",
       "        [-1.67949319e+00,  4.40139353e-01,  7.94564188e-01],\n",
       "        [ 7.21551716e-01,  1.78239429e+00,  1.97058409e-01],\n",
       "        [ 6.88782334e-01,  1.52555037e+00,  7.74945378e-01],\n",
       "        [ 1.03408337e+00, -6.91247702e-01,  1.04477003e-01],\n",
       "        [-5.63355163e-02, -3.12130600e-01, -5.97677231e-01],\n",
       "        [ 3.25265914e-01,  9.19327199e-01, -2.42591128e-02],\n",
       "        [ 1.17577600e+00,  4.25640047e-01, -2.87629932e-01],\n",
       "        [ 1.18764961e+00, -6.12580597e-01, -5.67695498e-01],\n",
       "        [-3.14397812e+00, -1.24092884e-01,  1.11696887e+00],\n",
       "        [-1.46940243e+00, -3.73862088e-01,  8.53793144e-01]],\n",
       "\n",
       "       [[ 8.88000727e-02, -3.34804118e-01, -1.17574954e+00],\n",
       "        [ 7.70861208e-01,  7.12100327e-01,  1.25365153e-01],\n",
       "        [-2.68019080e-01,  3.71931970e-01,  2.83939421e-01],\n",
       "        [-3.87823015e-01, -7.83523917e-01,  9.63698447e-01],\n",
       "        [ 1.21454015e-01,  1.81141162e+00, -6.48505330e-01],\n",
       "        [-2.50796586e-01,  2.15735126e+00, -1.12687206e+00],\n",
       "        [ 2.76870131e-01, -2.03820374e-02, -3.80897634e-02],\n",
       "        [-4.74455893e-01,  3.65907937e-01,  2.68036485e-01],\n",
       "        [-1.27694941e+00,  2.37070739e-01,  5.36653399e-01],\n",
       "        [ 5.67052543e-01, -2.54337047e-03,  9.85454246e-02],\n",
       "        [ 1.83499560e-01, -1.20249605e+00,  6.57552123e-01],\n",
       "        [-1.11027348e+00,  5.14275670e-01,  1.39686644e+00],\n",
       "        [ 1.90241289e+00,  1.06595445e+00,  9.61592674e-01],\n",
       "        [-8.35092068e-01,  9.48758721e-01,  1.03715688e-01],\n",
       "        [-3.69059801e-01, -1.38556635e+00, -1.02159858e+00],\n",
       "        [ 1.38559604e+00,  7.34723628e-01,  3.64893079e-01]],\n",
       "\n",
       "       [[ 5.91639400e-01,  6.14630401e-01,  1.30672908e+00],\n",
       "        [ 4.52193797e-01, -7.05292702e-01,  1.95522115e-01],\n",
       "        [-7.09242746e-02, -7.38252759e-01,  6.15450621e-01],\n",
       "        [ 6.09030545e-01, -1.52450815e-01, -1.59549728e-01],\n",
       "        [ 7.19598029e-03,  8.25353682e-01, -1.48486972e+00],\n",
       "        [-8.58436227e-01,  7.92805374e-01, -8.39383006e-01],\n",
       "        [ 3.22613955e-01, -6.38845146e-01, -4.93058592e-01],\n",
       "        [-3.62388253e-01,  2.87784457e-01,  1.92275524e-01],\n",
       "        [-3.50057602e-01, -1.50961387e+00, -1.04306531e+00],\n",
       "        [-1.30945846e-01, -1.89612603e+00,  5.85427642e-01],\n",
       "        [-7.70616531e-02,  2.46314377e-01, -1.14864898e+00],\n",
       "        [-4.31060910e-01, -1.41412783e+00,  7.94339895e-01],\n",
       "        [-8.79913688e-01,  1.11281753e+00, -1.84306097e+00],\n",
       "        [-4.37446117e-01,  1.58050048e+00,  5.61027884e-01],\n",
       "        [-1.86245823e+00,  1.00920260e+00, -4.74606276e-01],\n",
       "        [-9.18629587e-01,  9.95488822e-01, -7.70441711e-01]],\n",
       "\n",
       "       [[ 3.73271219e-02,  9.33791161e-01,  2.18039528e-01],\n",
       "        [-1.41421810e-01,  6.85772121e-01, -5.15900791e-01],\n",
       "        [ 4.18653935e-01, -1.86217964e+00, -1.05413079e+00],\n",
       "        [-1.86909556e-01,  8.64895880e-01, -7.05201864e-01],\n",
       "        [-1.51598477e+00, -8.57074797e-01,  1.85750329e+00],\n",
       "        [-1.93832886e+00, -5.04576147e-01,  2.29591870e+00],\n",
       "        [-6.00599945e-02,  3.38830888e-01, -4.85763013e-01],\n",
       "        [ 1.72702670e-01,  9.65979338e-01,  5.51546104e-02],\n",
       "        [-2.24063802e+00,  2.71075428e-01, -1.28235626e+00],\n",
       "        [-5.62535882e-01, -5.37046015e-01, -3.36441725e-01],\n",
       "        [-2.42387161e-01, -1.48107016e+00, -3.89117330e-01],\n",
       "        [-4.89959657e-01, -1.84516430e-01,  1.97634208e+00],\n",
       "        [-3.39895929e-03, -7.39753902e-01, -2.25946188e-01],\n",
       "        [-1.20790970e+00,  8.94172966e-01,  8.45533848e-01],\n",
       "        [-6.33952260e-01,  8.71410608e-01, -5.88525832e-01],\n",
       "        [-8.31132770e-01, -3.98831248e-01, -2.76251197e-01]],\n",
       "\n",
       "       [[ 5.96330822e-01, -4.87356156e-01, -1.28310263e-01],\n",
       "        [-1.66139078e+00, -1.83830097e-01, -2.25934005e+00],\n",
       "        [-1.23466575e+00, -1.23047853e+00, -1.03306301e-01],\n",
       "        [-1.09578192e+00, -1.98143736e-01,  5.24888337e-01],\n",
       "        [ 1.27151346e+00, -1.29290938e+00, -4.29332018e-01],\n",
       "        [ 2.58027822e-01, -1.06227472e-01,  6.40580237e-01],\n",
       "        [-2.75632069e-02,  9.62798774e-01, -1.40475953e+00],\n",
       "        [ 9.92577672e-01, -5.45883298e-01,  1.04697382e+00],\n",
       "        [ 8.00607443e-01,  1.51505291e+00, -2.60369647e-02],\n",
       "        [ 1.10097796e-01,  2.42114711e+00, -5.38437426e-01],\n",
       "        [-1.35257852e+00, -1.24464847e-01,  1.41685343e+00],\n",
       "        [-3.89962137e-01, -1.04260556e-01, -4.00462508e-01],\n",
       "        [ 6.28726840e-01,  3.39176863e-01, -6.73228204e-01],\n",
       "        [-1.49832702e+00,  1.09642291e+00,  1.13115358e+00],\n",
       "        [-6.07623935e-01,  3.70524555e-01, -1.46662629e+00],\n",
       "        [ 1.06530571e+00, -1.11854875e+00,  2.66434169e+00]],\n",
       "\n",
       "       [[-1.61744761e+00,  4.84536231e-01,  1.83884829e-01],\n",
       "        [ 5.46062827e-01,  6.91383302e-01, -7.14672863e-01],\n",
       "        [-1.18753552e+00,  5.41289151e-02,  8.75396840e-03],\n",
       "        [ 6.05390668e-02, -9.80698526e-01,  8.09462607e-01],\n",
       "        [-1.34800839e+00, -1.79048359e+00, -3.61758590e-01],\n",
       "        [-7.63420105e-01,  2.98908483e-02,  9.14971054e-01],\n",
       "        [ 6.95768893e-01, -1.82102883e+00,  1.60041273e+00],\n",
       "        [-1.18509233e+00, -1.74177098e+00,  2.78667897e-01],\n",
       "        [ 1.20555806e+00, -4.70829964e-01, -1.48736104e-01],\n",
       "        [ 1.27078891e+00,  6.42683327e-01,  4.95325953e-01],\n",
       "        [-2.07907605e+00, -7.44897246e-01, -3.69009346e-01],\n",
       "        [ 1.44676960e+00,  4.19407725e-01, -1.88328123e+00],\n",
       "        [ 2.22837472e+00,  9.00543511e-01, -1.02785814e+00],\n",
       "        [-3.06036651e-01, -1.57318637e-01, -6.82940900e-01],\n",
       "        [-4.84906912e-01,  1.20504797e+00, -3.19429547e-01],\n",
       "        [ 1.52550912e+00, -1.53261435e+00, -6.63653851e-01]],\n",
       "\n",
       "       [[-2.59584516e-01,  8.70203823e-02, -1.00728548e+00],\n",
       "        [-7.07939684e-01, -9.24077153e-01,  4.30639349e-02],\n",
       "        [-1.24237859e+00, -1.62179804e+00,  5.60388207e-01],\n",
       "        [-4.02661145e-01,  5.17775416e-01,  9.15284514e-01],\n",
       "        [-8.51591229e-02, -6.11628056e-01,  2.10779262e+00],\n",
       "        [ 5.94386756e-01,  6.37173116e-01, -4.37177300e-01],\n",
       "        [-2.02670050e+00, -6.26814783e-01, -8.27454150e-01],\n",
       "        [ 6.71150744e-01,  1.47706759e+00, -3.61513227e-01],\n",
       "        [ 1.36817507e-02,  1.15376139e+00,  2.35393927e-01],\n",
       "        [-6.20094717e-01,  1.42728078e+00, -1.94346917e+00],\n",
       "        [ 8.49327326e-01, -1.75614953e+00,  9.39564466e-01],\n",
       "        [-7.84245804e-02,  8.33774149e-01, -4.11785185e-01],\n",
       "        [-1.09166920e+00,  6.04841232e-01, -8.75839949e-01],\n",
       "        [ 1.08711863e+00,  5.48331380e-01, -8.07891488e-02],\n",
       "        [ 2.90890455e-01,  4.44794446e-01,  1.02849019e+00],\n",
       "        [ 3.01791251e-01, -3.33819509e-01, -7.09764838e-01]],\n",
       "\n",
       "       [[ 1.73331914e-03, -1.24428797e+00,  1.17349625e+00],\n",
       "        [ 1.21073842e+00, -3.15580010e-01, -4.81118597e-02],\n",
       "        [ 8.50573957e-01, -9.88054097e-01,  6.06770396e-01],\n",
       "        [ 1.01227403e+00,  1.11450791e+00,  1.84592351e-01],\n",
       "        [ 1.47259891e+00, -1.18576407e+00, -1.33590364e+00],\n",
       "        [ 5.58842242e-01, -2.63401628e-01, -2.49749541e-01],\n",
       "        [-5.83594978e-01, -7.11608231e-01,  2.00232959e+00],\n",
       "        [ 8.59941304e-01,  1.81667662e+00, -8.23783636e-01],\n",
       "        [ 4.57522094e-01, -1.50852895e+00,  7.63666570e-01],\n",
       "        [ 3.65711838e-01, -9.55322832e-02, -4.63541627e-01],\n",
       "        [ 2.18962923e-01, -9.10005510e-01,  2.12593007e+00],\n",
       "        [-7.08180904e-01,  9.62407291e-02, -4.30246443e-01],\n",
       "        [-8.84537280e-01, -1.01720953e+00,  9.43469703e-01],\n",
       "        [ 1.28302920e+00,  7.14545488e-01,  1.05975008e+00],\n",
       "        [ 2.57573992e-01, -3.90093058e-01, -3.08335471e+00],\n",
       "        [ 7.71874338e-02, -8.16967189e-01,  1.32336497e-01]],\n",
       "\n",
       "       [[-8.19855452e-01, -1.13441013e-01,  5.34523726e-01],\n",
       "        [-1.33922851e+00, -6.04890943e-01,  9.11339447e-02],\n",
       "        [-1.51598108e+00, -4.42917138e-01,  2.27512345e-01],\n",
       "        [ 1.63642907e+00,  8.21922839e-01, -1.12578380e+00],\n",
       "        [-1.69850349e-01, -7.22144306e-01,  1.35868415e-01],\n",
       "        [ 2.27914929e-01,  2.10164380e+00, -5.98616421e-01],\n",
       "        [ 5.38905151e-02,  7.01428592e-01,  8.30942154e-01],\n",
       "        [-3.32252175e-01,  4.74674761e-01, -1.92594588e-01],\n",
       "        [-1.04391551e+00, -2.64835805e-01, -6.47077203e-01],\n",
       "        [-9.71615374e-01, -1.53163123e+00,  5.85764408e-01],\n",
       "        [ 1.80004907e+00, -5.57987273e-01, -2.30414659e-01],\n",
       "        [-1.65059865e+00,  1.72362030e+00, -1.38583601e+00],\n",
       "        [ 7.86249578e-01,  2.11235023e+00, -9.23040628e-01],\n",
       "        [ 8.04277360e-01, -7.10375726e-01,  8.47412884e-01],\n",
       "        [-6.14158750e-01,  8.49469721e-01, -5.95974028e-01],\n",
       "        [ 2.08777809e+00, -1.24992587e-01,  5.24102926e-01]],\n",
       "\n",
       "       [[-8.42108488e-01, -9.16105092e-01, -1.38694978e+00],\n",
       "        [ 1.00380957e+00, -4.49554473e-01,  2.09873468e-02],\n",
       "        [ 1.06817865e+00, -1.85905969e+00,  2.12123108e+00],\n",
       "        [-3.86067837e-01,  6.92022562e-01,  5.18271506e-01],\n",
       "        [ 2.27187693e-01,  4.13174272e-01,  8.33331645e-01],\n",
       "        [-6.19863808e-01, -7.66594172e-01,  3.98010701e-01],\n",
       "        [ 1.46076429e+00, -1.69234347e+00,  5.11693537e-01],\n",
       "        [ 1.60219550e+00, -5.63644707e-01, -8.41170311e-01],\n",
       "        [ 1.09616983e+00,  1.88607126e-01, -9.89193678e-01],\n",
       "        [ 1.31578624e+00,  1.08898580e+00, -6.74114048e-01],\n",
       "        [ 2.75992811e-01,  8.73392045e-01, -1.22937155e+00],\n",
       "        [ 1.53713799e+00,  2.18652576e-01, -2.43601370e+00],\n",
       "        [ 1.17722201e+00,  2.66748875e-01, -2.57820725e-01],\n",
       "        [-3.96558702e-01, -1.92300916e+00,  9.77045178e-01],\n",
       "        [ 8.32880914e-01, -7.50853181e-01, -5.24920464e-01],\n",
       "        [ 2.74145216e-01,  1.24478316e+00, -1.39233303e+00]],\n",
       "\n",
       "       [[ 4.03815955e-01, -9.32509422e-01, -1.26306224e+00],\n",
       "        [-5.56390047e-01, -6.13102853e-01,  1.70852821e-02],\n",
       "        [ 1.71212777e-02, -2.54138947e+00,  1.00266290e+00],\n",
       "        [-4.47589666e-01, -1.20166555e-01,  8.69684756e-01],\n",
       "        [ 1.19433391e+00, -3.52595031e-01, -3.06324840e-01],\n",
       "        [ 1.57974645e-01,  1.36344492e+00, -7.74840355e-01],\n",
       "        [-2.23647475e+00, -1.13374424e+00,  9.21069801e-01],\n",
       "        [-2.21037793e+00,  1.97073981e-01, -2.76139230e-01],\n",
       "        [ 2.60104269e-01,  3.40914905e-01,  3.50049525e-01],\n",
       "        [-1.28095388e-01,  8.84858146e-02, -2.14165568e+00],\n",
       "        [-5.75147212e-01, -2.16764793e-01,  9.44467843e-01],\n",
       "        [-8.12866569e-01,  7.73790359e-01,  3.05933326e-01],\n",
       "        [ 4.42427218e-01,  5.99038064e-01, -1.78604591e+00],\n",
       "        [ 3.52026910e-01, -1.33962798e+00,  2.60017961e-01],\n",
       "        [ 8.76612484e-01,  5.92012346e-01,  2.13243389e+00],\n",
       "        [ 1.19067705e+00, -1.11826611e+00,  4.44248945e-01]],\n",
       "\n",
       "       [[-8.90987635e-01,  5.48499644e-01,  3.84057999e-01],\n",
       "        [-1.87976241e+00, -2.57430989e-02, -1.28842306e+00],\n",
       "        [ 1.05113292e+00,  2.23842278e-01,  6.65820777e-01],\n",
       "        [-1.07796630e-02,  7.07390253e-03,  1.54134616e-01],\n",
       "        [-1.15851879e+00, -1.00046515e+00,  1.58345473e+00],\n",
       "        [-1.72805989e+00,  8.71130586e-01, -7.80013800e-01],\n",
       "        [ 7.59886742e-01,  1.36632013e+00, -1.03549045e-02],\n",
       "        [ 4.37612802e-01,  1.93308556e+00,  1.01783705e+00],\n",
       "        [-3.88645321e-01, -1.09168804e+00,  1.25066209e+00],\n",
       "        [ 2.59818316e-01,  4.64371413e-01, -9.62269753e-02],\n",
       "        [-3.01647115e+00, -5.68229675e-01, -9.94216621e-01],\n",
       "        [-6.00854158e-01, -7.98018098e-01, -1.66098308e-03],\n",
       "        [ 6.39832318e-01,  5.34218311e-01, -5.68579078e-01],\n",
       "        [-9.31481719e-01,  9.73984182e-01, -8.84471476e-01],\n",
       "        [ 7.34009564e-01,  8.76669884e-01, -3.53598833e-01],\n",
       "        [-1.13469219e+00, -1.15895796e+00,  3.95114154e-01]],\n",
       "\n",
       "       [[ 5.36249340e-01,  1.15948355e+00,  1.73607516e+00],\n",
       "        [ 9.55899894e-01, -1.07141960e+00, -2.01489568e+00],\n",
       "        [ 1.02103066e+00,  2.06261897e+00, -3.28520685e-01],\n",
       "        [-1.55889344e+00, -7.55807236e-02,  6.27726436e-01],\n",
       "        [-7.14540899e-01,  4.73412573e-01,  6.75735891e-01],\n",
       "        [-6.56076491e-01, -5.43663144e-01, -6.27210021e-01],\n",
       "        [-1.04804799e-01, -2.45497711e-02,  1.44904470e+00],\n",
       "        [-8.70649219e-01,  1.71111429e+00, -3.35361660e-01],\n",
       "        [-2.28239274e+00,  5.77715635e-01,  1.09170818e+00],\n",
       "        [-1.24929488e-01, -1.68889129e+00, -6.64643645e-01],\n",
       "        [ 1.38878858e+00,  1.02652490e+00, -1.05290902e+00],\n",
       "        [-7.73726702e-01,  9.74414945e-01,  1.71826982e+00],\n",
       "        [ 1.55588210e+00, -9.17702168e-02,  7.19926000e-01],\n",
       "        [ 3.34913373e-01, -9.93829131e-01,  1.11709499e+00],\n",
       "        [ 2.22085619e+00,  3.34426910e-01,  1.03876233e+00],\n",
       "        [ 7.70257115e-01, -5.77721782e-02, -7.17843533e-01]]],\n",
       "      dtype=float32)>"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#读取每张图片的所有通道，其中行按着逆序隔行采样，列按着逆序隔行采样，实现如下\n",
    "x = tf.random.normal([4,32,32,3])\n",
    "x[0,::-2,::-2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(4, 32, 32), dtype=float32, numpy=\n",
       "array([[[-0.29695067, -0.34063765,  0.4971563 , ...,  0.26682025,\n",
       "         -1.2827673 , -0.28886604],\n",
       "        [ 1.3116153 , -0.05777218,  0.33277753, ..., -1.0714196 ,\n",
       "          0.09570588,  1.1594836 ],\n",
       "        [-1.7412945 , -1.1249315 ,  1.3379229 , ...,  0.33773607,\n",
       "         -0.17907085,  1.9611303 ],\n",
       "        ...,\n",
       "        [-0.25317454, -1.1528791 ,  0.365323  , ..., -1.4874161 ,\n",
       "         -0.86608434,  2.8749466 ],\n",
       "        [ 0.84508014, -0.7874416 ,  0.03464988, ..., -0.39588392,\n",
       "          0.07997593,  1.6615741 ],\n",
       "        [-1.2262039 , -0.05581179,  0.07573486, ...,  0.47905204,\n",
       "          0.09111019,  0.00365027]],\n",
       "\n",
       "       [[-0.14712015,  0.73865616,  0.28208318, ..., -1.0093828 ,\n",
       "         -0.9533548 , -0.6103448 ],\n",
       "        [ 0.12234307,  1.4759115 , -0.04693868, ...,  0.40443435,\n",
       "         -2.522554  ,  0.12955086],\n",
       "        [ 0.7573691 , -0.16518852,  1.3536258 , ..., -0.2871444 ,\n",
       "          0.06291466,  0.98677295],\n",
       "        ...,\n",
       "        [ 0.6850607 ,  0.22196643, -0.99976164, ..., -0.22618806,\n",
       "          1.090478  , -0.05441014],\n",
       "        [-2.5794284 ,  0.76433635, -0.06060028, ..., -0.42569017,\n",
       "         -0.52150375, -0.16311063],\n",
       "        [ 2.0314229 ,  1.2028912 , -0.32647857, ...,  0.03891859,\n",
       "         -1.4204122 ,  0.04696659]],\n",
       "\n",
       "       [[ 0.9729782 , -2.1376467 , -1.1759802 , ...,  1.6604103 ,\n",
       "         -1.3879282 ,  0.6349153 ],\n",
       "        [-0.01932523, -0.6907161 , -0.08147892, ...,  0.56254435,\n",
       "         -0.64330953, -0.9843627 ],\n",
       "        [ 1.1634393 , -0.34099567,  0.09386377, ..., -0.09076585,\n",
       "          0.02995972, -1.152405  ],\n",
       "        ...,\n",
       "        [-0.6666359 ,  2.6829958 ,  0.37542447, ...,  3.1922646 ,\n",
       "         -0.72276205, -0.15774949],\n",
       "        [ 0.04083742,  1.1980866 ,  0.8168979 , ...,  0.18194012,\n",
       "         -1.0294051 , -1.8461452 ],\n",
       "        [ 1.3841473 ,  0.31053707, -0.78150755, ..., -2.3485575 ,\n",
       "         -1.3829024 , -1.1317096 ]],\n",
       "\n",
       "       [[ 0.6319985 ,  1.7564167 , -0.20210291, ...,  0.56735   ,\n",
       "         -0.5083966 , -0.39378536],\n",
       "        [ 1.3781778 ,  0.9296624 , -0.6346921 , ...,  0.44357252,\n",
       "          0.06980661, -0.37075806],\n",
       "        [ 0.678286  ,  0.9744386 ,  1.0597938 , ...,  0.19663002,\n",
       "          1.72824   ,  0.94460005],\n",
       "        ...,\n",
       "        [ 1.1287371 , -0.72738045,  0.01113542, ...,  0.7182131 ,\n",
       "          1.1652653 , -0.15979111],\n",
       "        [ 0.87537885, -0.446376  , -1.9481254 , ..., -0.30791923,\n",
       "         -0.01941341,  0.9381861 ],\n",
       "        [-1.3937272 , -0.48157927, -0.03444072, ..., -2.6841004 ,\n",
       "         -1.0763066 ,  0.542052  ]]], dtype=float32)>"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x[:,:,:,1]  #取第二个通道数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 32, 32, 2), dtype=float32, numpy=\n",
       "array([[[[-0.29695067, -0.13487785],\n",
       "         [-0.34063765,  1.3697096 ],\n",
       "         [ 0.4971563 ,  2.1103804 ],\n",
       "         ...,\n",
       "         [ 0.26682025,  0.63278973],\n",
       "         [-1.2827673 ,  0.34136525],\n",
       "         [-0.28886604, -0.02873423]],\n",
       "\n",
       "        [[ 1.3116153 , -0.27400574],\n",
       "         [-0.05777218, -0.71784353],\n",
       "         [ 0.33277753,  2.6130927 ],\n",
       "         ...,\n",
       "         [-1.0714196 , -2.0148957 ],\n",
       "         [ 0.09570588, -0.6913104 ],\n",
       "         [ 1.1594836 ,  1.7360752 ]],\n",
       "\n",
       "        [[-1.7412945 , -0.2442322 ],\n",
       "         [-1.1249315 ,  1.7876185 ],\n",
       "         [ 1.3379229 , -0.56197405],\n",
       "         ...,\n",
       "         [ 0.33773607, -0.24148734],\n",
       "         [-0.17907085, -0.12734783],\n",
       "         [ 1.9611303 ,  1.4825686 ]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[-0.25317454, -1.1451837 ],\n",
       "         [-1.1528791 ,  1.8839784 ],\n",
       "         [ 0.365323  , -0.19049215],\n",
       "         ...,\n",
       "         [-1.4874161 ,  0.02853118],\n",
       "         [-0.86608434, -0.18470067],\n",
       "         [ 2.8749466 , -0.7371802 ]],\n",
       "\n",
       "        [[ 0.84508014, -0.2970597 ],\n",
       "         [-0.7874416 ,  0.27351692],\n",
       "         [ 0.03464988, -3.0390513 ],\n",
       "         ...,\n",
       "         [-0.39588392,  0.505659  ],\n",
       "         [ 0.07997593, -1.2868084 ],\n",
       "         [ 1.6615741 , -0.60575336]],\n",
       "\n",
       "        [[-1.2262039 ,  1.0706526 ],\n",
       "         [-0.05581179,  0.2416213 ],\n",
       "         [ 0.07573486, -0.15935072],\n",
       "         ...,\n",
       "         [ 0.47905204, -0.76474935],\n",
       "         [ 0.09111019,  0.65562207],\n",
       "         [ 0.00365027, -1.3122014 ]]],\n",
       "\n",
       "\n",
       "       [[[-0.14712015,  1.8928245 ],\n",
       "         [ 0.73865616, -1.4893475 ],\n",
       "         [ 0.28208318,  0.02710963],\n",
       "         ...,\n",
       "         [-1.0093828 , -1.5491431 ],\n",
       "         [-0.9533548 ,  0.05052827],\n",
       "         [-0.6103448 , -0.49645403]],\n",
       "\n",
       "        [[ 0.12234307,  0.41477567],\n",
       "         [ 1.4759115 ,  0.03016946],\n",
       "         [-0.04693868,  0.54895806],\n",
       "         ...,\n",
       "         [ 0.40443435,  0.7614175 ],\n",
       "         [-2.522554  , -1.059959  ],\n",
       "         [ 0.12955086,  1.1441461 ]],\n",
       "\n",
       "        [[ 0.7573691 ,  0.57770926],\n",
       "         [-0.16518852,  0.51685643],\n",
       "         [ 1.3536258 , -0.7543723 ],\n",
       "         ...,\n",
       "         [-0.2871444 ,  1.0665247 ],\n",
       "         [ 0.06291466,  0.2038183 ],\n",
       "         [ 0.98677295, -0.6104318 ]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[ 0.6850607 ,  1.6649182 ],\n",
       "         [ 0.22196643, -1.81101   ],\n",
       "         [-0.99976164,  0.09306609],\n",
       "         ...,\n",
       "         [-0.22618806, -1.063146  ],\n",
       "         [ 1.090478  , -0.60697824],\n",
       "         [-0.05441014,  0.4139112 ]],\n",
       "\n",
       "        [[-2.5794284 , -0.711936  ],\n",
       "         [ 0.76433635, -0.76013327],\n",
       "         [-0.06060028, -0.6286977 ],\n",
       "         ...,\n",
       "         [-0.42569017, -0.42474052],\n",
       "         [-0.52150375, -0.5521006 ],\n",
       "         [-0.16311063, -1.2832459 ]],\n",
       "\n",
       "        [[ 2.0314229 , -0.5888802 ],\n",
       "         [ 1.2028912 ,  0.95927745],\n",
       "         [-0.32647857, -0.2466043 ],\n",
       "         ...,\n",
       "         [ 0.03891859,  0.198482  ],\n",
       "         [-1.4204122 ,  0.9218654 ],\n",
       "         [ 0.04696659,  0.3027016 ]]]], dtype=float32)>"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x[0:2,...,1:]  #取第一、二张的G/B通道数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 32, 32, 3), dtype=float32, numpy=\n",
       "array([[[[-3.27077985e-01,  9.72978175e-01,  8.93535376e-01],\n",
       "         [-2.54235119e-01, -2.13764668e+00, -9.30576026e-01],\n",
       "         [ 7.78689206e-01, -1.17598021e+00, -1.03263366e+00],\n",
       "         ...,\n",
       "         [ 1.87710375e-01,  1.66041028e+00,  1.33533478e+00],\n",
       "         [-4.11144882e-01, -1.38792825e+00, -2.54526186e+00],\n",
       "         [-1.13452256e+00,  6.34915292e-01,  1.28201354e+00]],\n",
       "\n",
       "        [[-1.43554866e+00, -1.93252340e-02,  1.00294030e+00],\n",
       "         [ 1.06760032e-01, -6.90716088e-01,  1.27827430e+00],\n",
       "         [ 9.41281989e-02, -8.14789161e-02,  2.65769055e-03],\n",
       "         ...,\n",
       "         [-5.86504936e-01,  5.62544346e-01, -5.69782406e-02],\n",
       "         [-5.39991558e-01, -6.43309534e-01, -2.40938830e+00],\n",
       "         [ 1.01464055e-01, -9.84362721e-01, -1.66926491e+00]],\n",
       "\n",
       "        [[-1.45310879e+00,  1.16343927e+00, -1.55677533e+00],\n",
       "         [ 1.01464272e+00, -3.40995669e-01,  1.89150941e+00],\n",
       "         [ 1.04433286e+00,  9.38637704e-02,  7.81900659e-02],\n",
       "         ...,\n",
       "         [-1.18235338e+00, -9.07658488e-02, -1.57932401e+00],\n",
       "         [-4.02394354e-01,  2.99597215e-02, -5.05278707e-01],\n",
       "         [-9.97794330e-01, -1.15240502e+00, -1.05437744e+00]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[-1.23628241e-03, -6.66635871e-01,  2.49980912e-01],\n",
       "         [-8.74719024e-01,  2.68299580e+00,  9.86718595e-01],\n",
       "         [-6.25789821e-01,  3.75424474e-01,  8.97755980e-01],\n",
       "         ...,\n",
       "         [ 1.09506595e+00,  3.19226456e+00, -5.88185191e-01],\n",
       "         [ 1.23888433e+00, -7.22762048e-01, -4.54796433e-01],\n",
       "         [ 1.26251113e+00, -1.57749489e-01,  3.43286945e-03]],\n",
       "\n",
       "        [[-5.18023074e-01,  4.08374220e-02,  6.31155133e-01],\n",
       "         [-1.29547298e+00,  1.19808662e+00, -1.76537573e+00],\n",
       "         [ 6.53695107e-01,  8.16897929e-01,  9.50531244e-01],\n",
       "         ...,\n",
       "         [-2.51925349e-01,  1.81940123e-01, -8.59932601e-01],\n",
       "         [-6.11503184e-01, -1.02940512e+00,  3.77568215e-01],\n",
       "         [ 3.26119959e-01, -1.84614515e+00, -3.12879443e-01]],\n",
       "\n",
       "        [[-1.75158709e-01,  1.38414729e+00, -1.32809460e+00],\n",
       "         [ 5.00613272e-01,  3.10537070e-01, -3.05304319e-01],\n",
       "         [-8.90497267e-01, -7.81507552e-01, -1.85502720e+00],\n",
       "         ...,\n",
       "         [ 4.47978765e-01, -2.34855747e+00,  1.50510207e-01],\n",
       "         [-2.26500690e-01, -1.38290238e+00,  3.18594456e-01],\n",
       "         [-1.73904240e+00, -1.13170958e+00,  3.70604068e-01]]],\n",
       "\n",
       "\n",
       "       [[[ 1.24864146e-01,  6.31998479e-01, -1.00196922e+00],\n",
       "         [-2.18131852e+00,  1.75641668e+00,  1.99372172e-02],\n",
       "         [-9.51827049e-01, -2.02102914e-01, -1.10429835e+00],\n",
       "         ...,\n",
       "         [ 4.13096905e-01,  5.67349970e-01,  6.30183378e-04],\n",
       "         [ 7.01483250e-01, -5.08396626e-01, -3.01088631e-01],\n",
       "         [ 1.11460710e+00, -3.93785357e-01,  9.56901789e-01]],\n",
       "\n",
       "        [[-1.94954729e+00,  1.37817776e+00, -1.77597356e+00],\n",
       "         [-4.43212003e-01,  9.29662406e-01,  6.85027421e-01],\n",
       "         [ 1.75597858e+00, -6.34692073e-01, -1.92582577e-01],\n",
       "         ...,\n",
       "         [-2.65429229e-01,  4.43572521e-01, -5.75309753e-01],\n",
       "         [ 1.62308425e-01,  6.98066130e-02,  4.09291744e-01],\n",
       "         [-1.54850125e+00, -3.70758057e-01, -1.97341338e-01]],\n",
       "\n",
       "        [[ 1.16475570e+00,  6.78286016e-01,  1.52511537e+00],\n",
       "         [ 1.69397271e+00,  9.74438608e-01,  1.24640298e+00],\n",
       "         [ 9.59494829e-01,  1.05979383e+00, -1.30989695e+00],\n",
       "         ...,\n",
       "         [-1.59982884e+00,  1.96630016e-01, -4.92539495e-01],\n",
       "         [ 7.99536407e-01,  1.72824001e+00,  2.09941432e-01],\n",
       "         [ 3.15220267e-01,  9.44600046e-01,  7.59261474e-02]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[-6.80004716e-01,  1.12873709e+00, -1.21368431e-02],\n",
       "         [-1.38823509e+00, -7.27380455e-01,  2.32734919e-01],\n",
       "         [-6.45500302e-01,  1.11354152e-02, -2.87255973e-01],\n",
       "         ...,\n",
       "         [ 3.44127774e-01,  7.18213081e-01, -1.96663463e+00],\n",
       "         [ 5.58814406e-01,  1.16526532e+00,  6.07831240e-01],\n",
       "         [-2.89554477e+00, -1.59791112e-01,  4.03326124e-01]],\n",
       "\n",
       "        [[ 1.09973833e-01,  8.75378847e-01,  3.12839029e-03],\n",
       "         [ 2.99188828e+00, -4.46375996e-01,  1.16368628e+00],\n",
       "         [-1.05383790e+00, -1.94812536e+00,  1.20245087e+00],\n",
       "         ...,\n",
       "         [-1.18472850e+00, -3.07919234e-01, -6.05422668e-02],\n",
       "         [-2.24958748e-01, -1.94134060e-02, -1.80021536e+00],\n",
       "         [-6.90637767e-01,  9.38186109e-01,  2.95180500e-01]],\n",
       "\n",
       "        [[-1.93642008e+00, -1.39372718e+00,  3.72578472e-01],\n",
       "         [ 1.60006493e-01, -4.81579274e-01,  1.38632202e+00],\n",
       "         [ 2.40125507e-01, -3.44407223e-02, -3.04434836e-01],\n",
       "         ...,\n",
       "         [-1.49864841e+00, -2.68410039e+00, -1.24129760e+00],\n",
       "         [-2.09372592e+00, -1.07630658e+00, -1.44677413e+00],\n",
       "         [ 2.26662779e+00,  5.42051971e-01,  1.82513118e-01]]]],\n",
       "      dtype=float32)>"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#取最后两张图片的所有数据\n",
    "x[-2:,...]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(4, 32, 32, 2), dtype=float32, numpy=\n",
       "array([[[[-1.34473276e+00, -2.96950668e-01],\n",
       "         [ 6.35794818e-01, -3.40637654e-01],\n",
       "         [ 9.46054399e-01,  4.97156292e-01],\n",
       "         ...,\n",
       "         [ 4.37028185e-02,  2.66820252e-01],\n",
       "         [ 1.32684481e+00, -1.28276730e+00],\n",
       "         [-4.53121096e-01, -2.88866043e-01]],\n",
       "\n",
       "        [[ 5.95360920e-02,  1.31161535e+00],\n",
       "         [ 7.70257115e-01, -5.77721782e-02],\n",
       "         [-2.07570672e-01,  3.32777530e-01],\n",
       "         ...,\n",
       "         [ 9.55899894e-01, -1.07141960e+00],\n",
       "         [ 1.50038302e-01,  9.57058817e-02],\n",
       "         [ 5.36249340e-01,  1.15948355e+00]],\n",
       "\n",
       "        [[ 5.32919466e-01, -1.74129450e+00],\n",
       "         [-4.12635803e-01, -1.12493145e+00],\n",
       "         [ 1.18857467e+00,  1.33792293e+00],\n",
       "         ...,\n",
       "         [ 8.88367712e-01,  3.37736070e-01],\n",
       "         [ 4.09258425e-01, -1.79070845e-01],\n",
       "         [ 6.71622038e-01,  1.96113026e+00]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[-5.01015306e-01, -2.53174543e-01],\n",
       "         [-5.05999982e-01, -1.15287912e+00],\n",
       "         [-6.22237444e-01,  3.65323007e-01],\n",
       "         ...,\n",
       "         [ 2.84031391e+00, -1.48741615e+00],\n",
       "         [ 7.64955699e-01, -8.66084337e-01],\n",
       "         [ 9.32314456e-01,  2.87494659e+00]],\n",
       "\n",
       "        [[-4.54433829e-01,  8.45080137e-01],\n",
       "         [-1.08383787e+00, -7.87441611e-01],\n",
       "         [ 4.02339846e-01,  3.46498825e-02],\n",
       "         ...,\n",
       "         [ 1.64513692e-01, -3.95883918e-01],\n",
       "         [ 1.12478125e+00,  7.99759328e-02],\n",
       "         [ 8.45797267e-03,  1.66157413e+00]],\n",
       "\n",
       "        [[ 1.41392660e+00, -1.22620392e+00],\n",
       "         [ 1.21165089e-01, -5.58117926e-02],\n",
       "         [-9.49320477e-03,  7.57348612e-02],\n",
       "         ...,\n",
       "         [ 2.44655341e-01,  4.79052037e-01],\n",
       "         [-8.55347335e-01,  9.11101922e-02],\n",
       "         [-1.21394861e+00,  3.65026575e-03]]],\n",
       "\n",
       "\n",
       "       [[[-7.92978331e-02, -1.47120148e-01],\n",
       "         [-7.29003191e-01,  7.38656163e-01],\n",
       "         [ 1.29110068e-01,  2.82083184e-01],\n",
       "         ...,\n",
       "         [ 5.05255401e-01, -1.00938284e+00],\n",
       "         [ 1.54037380e+00, -9.53354776e-01],\n",
       "         [-9.63392437e-01, -6.10344827e-01]],\n",
       "\n",
       "        [[-4.03937280e-01,  1.22343071e-01],\n",
       "         [-2.35650015e+00,  1.47591150e+00],\n",
       "         [ 5.80860339e-02, -4.69386838e-02],\n",
       "         ...,\n",
       "         [ 2.09005713e-01,  4.04434353e-01],\n",
       "         [-7.31365204e-01, -2.52255392e+00],\n",
       "         [ 1.09191574e-02,  1.29550859e-01]],\n",
       "\n",
       "        [[-1.04324329e+00,  7.57369101e-01],\n",
       "         [ 3.87476832e-01, -1.65188521e-01],\n",
       "         [ 6.74016178e-01,  1.35362577e+00],\n",
       "         ...,\n",
       "         [ 1.79411069e-01, -2.87144393e-01],\n",
       "         [ 5.24811268e-01,  6.29146621e-02],\n",
       "         [-1.22446549e+00,  9.86772954e-01]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[-4.12553638e-01,  6.85060680e-01],\n",
       "         [ 5.75751603e-01,  2.21966431e-01],\n",
       "         [ 1.96050793e-01, -9.99761641e-01],\n",
       "         ...,\n",
       "         [ 9.40930903e-01, -2.26188064e-01],\n",
       "         [ 1.16432345e+00,  1.09047794e+00],\n",
       "         [ 1.13620627e+00, -5.44101372e-02]],\n",
       "\n",
       "        [[-1.02366284e-01, -2.57942843e+00],\n",
       "         [-1.81403506e+00,  7.64336348e-01],\n",
       "         [-2.11048245e+00, -6.06002845e-02],\n",
       "         ...,\n",
       "         [-8.57465193e-02, -4.25690174e-01],\n",
       "         [ 1.20854878e+00, -5.21503747e-01],\n",
       "         [-6.42015636e-02, -1.63110629e-01]],\n",
       "\n",
       "        [[-1.42293501e+00,  2.03142285e+00],\n",
       "         [-1.76319873e+00,  1.20289123e+00],\n",
       "         [-3.55544865e-01, -3.26478571e-01],\n",
       "         ...,\n",
       "         [ 1.09979475e+00,  3.89185883e-02],\n",
       "         [-5.04162073e-01, -1.42041218e+00],\n",
       "         [-1.04964757e+00,  4.69665900e-02]]],\n",
       "\n",
       "\n",
       "       [[[-3.27077985e-01,  9.72978175e-01],\n",
       "         [-2.54235119e-01, -2.13764668e+00],\n",
       "         [ 7.78689206e-01, -1.17598021e+00],\n",
       "         ...,\n",
       "         [ 1.87710375e-01,  1.66041028e+00],\n",
       "         [-4.11144882e-01, -1.38792825e+00],\n",
       "         [-1.13452256e+00,  6.34915292e-01]],\n",
       "\n",
       "        [[-1.43554866e+00, -1.93252340e-02],\n",
       "         [ 1.06760032e-01, -6.90716088e-01],\n",
       "         [ 9.41281989e-02, -8.14789161e-02],\n",
       "         ...,\n",
       "         [-5.86504936e-01,  5.62544346e-01],\n",
       "         [-5.39991558e-01, -6.43309534e-01],\n",
       "         [ 1.01464055e-01, -9.84362721e-01]],\n",
       "\n",
       "        [[-1.45310879e+00,  1.16343927e+00],\n",
       "         [ 1.01464272e+00, -3.40995669e-01],\n",
       "         [ 1.04433286e+00,  9.38637704e-02],\n",
       "         ...,\n",
       "         [-1.18235338e+00, -9.07658488e-02],\n",
       "         [-4.02394354e-01,  2.99597215e-02],\n",
       "         [-9.97794330e-01, -1.15240502e+00]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[-1.23628241e-03, -6.66635871e-01],\n",
       "         [-8.74719024e-01,  2.68299580e+00],\n",
       "         [-6.25789821e-01,  3.75424474e-01],\n",
       "         ...,\n",
       "         [ 1.09506595e+00,  3.19226456e+00],\n",
       "         [ 1.23888433e+00, -7.22762048e-01],\n",
       "         [ 1.26251113e+00, -1.57749489e-01]],\n",
       "\n",
       "        [[-5.18023074e-01,  4.08374220e-02],\n",
       "         [-1.29547298e+00,  1.19808662e+00],\n",
       "         [ 6.53695107e-01,  8.16897929e-01],\n",
       "         ...,\n",
       "         [-2.51925349e-01,  1.81940123e-01],\n",
       "         [-6.11503184e-01, -1.02940512e+00],\n",
       "         [ 3.26119959e-01, -1.84614515e+00]],\n",
       "\n",
       "        [[-1.75158709e-01,  1.38414729e+00],\n",
       "         [ 5.00613272e-01,  3.10537070e-01],\n",
       "         [-8.90497267e-01, -7.81507552e-01],\n",
       "         ...,\n",
       "         [ 4.47978765e-01, -2.34855747e+00],\n",
       "         [-2.26500690e-01, -1.38290238e+00],\n",
       "         [-1.73904240e+00, -1.13170958e+00]]],\n",
       "\n",
       "\n",
       "       [[[ 1.24864146e-01,  6.31998479e-01],\n",
       "         [-2.18131852e+00,  1.75641668e+00],\n",
       "         [-9.51827049e-01, -2.02102914e-01],\n",
       "         ...,\n",
       "         [ 4.13096905e-01,  5.67349970e-01],\n",
       "         [ 7.01483250e-01, -5.08396626e-01],\n",
       "         [ 1.11460710e+00, -3.93785357e-01]],\n",
       "\n",
       "        [[-1.94954729e+00,  1.37817776e+00],\n",
       "         [-4.43212003e-01,  9.29662406e-01],\n",
       "         [ 1.75597858e+00, -6.34692073e-01],\n",
       "         ...,\n",
       "         [-2.65429229e-01,  4.43572521e-01],\n",
       "         [ 1.62308425e-01,  6.98066130e-02],\n",
       "         [-1.54850125e+00, -3.70758057e-01]],\n",
       "\n",
       "        [[ 1.16475570e+00,  6.78286016e-01],\n",
       "         [ 1.69397271e+00,  9.74438608e-01],\n",
       "         [ 9.59494829e-01,  1.05979383e+00],\n",
       "         ...,\n",
       "         [-1.59982884e+00,  1.96630016e-01],\n",
       "         [ 7.99536407e-01,  1.72824001e+00],\n",
       "         [ 3.15220267e-01,  9.44600046e-01]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[-6.80004716e-01,  1.12873709e+00],\n",
       "         [-1.38823509e+00, -7.27380455e-01],\n",
       "         [-6.45500302e-01,  1.11354152e-02],\n",
       "         ...,\n",
       "         [ 3.44127774e-01,  7.18213081e-01],\n",
       "         [ 5.58814406e-01,  1.16526532e+00],\n",
       "         [-2.89554477e+00, -1.59791112e-01]],\n",
       "\n",
       "        [[ 1.09973833e-01,  8.75378847e-01],\n",
       "         [ 2.99188828e+00, -4.46375996e-01],\n",
       "         [-1.05383790e+00, -1.94812536e+00],\n",
       "         ...,\n",
       "         [-1.18472850e+00, -3.07919234e-01],\n",
       "         [-2.24958748e-01, -1.94134060e-02],\n",
       "         [-6.90637767e-01,  9.38186109e-01]],\n",
       "\n",
       "        [[-1.93642008e+00, -1.39372718e+00],\n",
       "         [ 1.60006493e-01, -4.81579274e-01],\n",
       "         [ 2.40125507e-01, -3.44407223e-02],\n",
       "         ...,\n",
       "         [-1.49864841e+00, -2.68410039e+00],\n",
       "         [-2.09372592e+00, -1.07630658e+00],\n",
       "         [ 2.26662779e+00,  5.42051971e-01]]]], dtype=float32)>"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#读取R/G通道数据\n",
    "x[...,:2]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 维度变换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 4, 4, 3), dtype=int32, numpy=\n",
       "array([[[[ 0,  1,  2],\n",
       "         [ 3,  4,  5],\n",
       "         [ 6,  7,  8],\n",
       "         [ 9, 10, 11]],\n",
       "\n",
       "        [[12, 13, 14],\n",
       "         [15, 16, 17],\n",
       "         [18, 19, 20],\n",
       "         [21, 22, 23]],\n",
       "\n",
       "        [[24, 25, 26],\n",
       "         [27, 28, 29],\n",
       "         [30, 31, 32],\n",
       "         [33, 34, 35]],\n",
       "\n",
       "        [[36, 37, 38],\n",
       "         [39, 40, 41],\n",
       "         [42, 43, 44],\n",
       "         [45, 46, 47]]],\n",
       "\n",
       "\n",
       "       [[[48, 49, 50],\n",
       "         [51, 52, 53],\n",
       "         [54, 55, 56],\n",
       "         [57, 58, 59]],\n",
       "\n",
       "        [[60, 61, 62],\n",
       "         [63, 64, 65],\n",
       "         [66, 67, 68],\n",
       "         [69, 70, 71]],\n",
       "\n",
       "        [[72, 73, 74],\n",
       "         [75, 76, 77],\n",
       "         [78, 79, 80],\n",
       "         [81, 82, 83]],\n",
       "\n",
       "        [[84, 85, 86],\n",
       "         [87, 88, 89],\n",
       "         [90, 91, 92],\n",
       "         [93, 94, 95]]]])>"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#序列变矩阵\n",
    "x = tf.range(96)\n",
    "x =tf.reshape(x,[2,4,4,3])    #值改变了视图\n",
    "x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4, TensorShape([2, 4, 4, 3]))"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.ndim,x.shape  #获取张量维度数及形状列表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 48), dtype=int32, numpy=\n",
       "array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\n",
       "        16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n",
       "        32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47],\n",
       "       [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n",
       "        64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n",
       "        80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95]])>"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.reshape(x,[2,-1])   #-1表示保持已确定维度不变，自行填充此维度。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "TensorShape([28, 28, 1])"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#增加维度  为改变视图\n",
    "\n",
    "x = tf.random.uniform([28,28], maxval=10, dtype=tf.int32)\n",
    "\n",
    "#通过 tf.expand_dims(x, axis)可在指定的 axis 轴前可以插入一个新的维度\n",
    "x = tf.expand_dims(x, axis=2)   #在末位插入维度\n",
    "x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "TensorShape([1, 28, 28, 1])"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = tf.expand_dims(x, axis=0)  #在首位插入维度\n",
    "x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "TensorShape([28, 28, 1])"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#删除维度\n",
    "x = tf.squeeze(x, axis=0) #删除图片数量维度\n",
    "x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "TensorShape([28, 28])"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = tf.squeeze(x, axis=2) #删除图片通道维度\n",
    "x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "TensorShape([28, 28])"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = tf.random.uniform([1,28,28,1], maxval=10, dtype=tf.int32)\n",
    "x = tf.squeeze(x)   #默认删除长度为1的维度\n",
    "x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "TensorShape([2, 3, 32, 32])"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#交换维度\n",
    "x = tf.random.uniform([2,32,32,3])\n",
    "tf.transpose(x, perm=[0,3,1,2]).shape   #根据x.shape的索引，交换维度顺序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(1, 2), dtype=int32, numpy=array([[1, 2]])>"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#复制数据\n",
    "b = tf.constant([1,2])\n",
    "b = tf.expand_dims(b,axis=0)  #变为矩阵\n",
    "b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 2), dtype=int32, numpy=\n",
       "array([[1, 2],\n",
       "       [1, 2]])>"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#将数据复制\n",
    "b = tf.tile(b, multiples=[2,1])  #0维度复制两份，1维度复制一份\n",
    "b"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数学运算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(5,), dtype=int32, numpy=array([0, 0, 1, 1, 2])>"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#加 、 减 、 乘 、 除 运算           +、 −、 ∗ 、/   //、%整除与余除\n",
    "\n",
    "a = tf.range(5)\n",
    "b = tf.constant(2)\n",
    "a // b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(5,), dtype=int32, numpy=array([0, 1, 0, 1, 0])>"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a%b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(<tf.Tensor: shape=(4,), dtype=int32, numpy=array([ 0,  1,  8, 27])>,\n",
       " <tf.Tensor: shape=(4,), dtype=int32, numpy=array([ 0,  1,  8, 27])>)"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#乘方\n",
    "x = tf.range(4)\n",
    "tf.pow(x,3) , x**3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(3,), dtype=float32, numpy=array([1., 2., 3.], dtype=float32)>"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#平方根\n",
    "x = tf.constant([1.,4.,9.])\n",
    "x**(0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tf.Tensor([ 0.  1.  4.  9. 16.], shape=(5,), dtype=float32)\n",
      "tf.Tensor([0.        1.        1.4142135 1.7320508 2.       ], shape=(5,), dtype=float32)\n"
     ]
    }
   ],
   "source": [
    "#基本平方与平方根\n",
    "x = tf.range(5)\n",
    "x = tf.cast(x, dtype=tf.float32)\n",
    "print(tf.square(x))  #平方\n",
    "print(tf.sqrt(x)) #平方根"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(3,), dtype=float32, numpy=array([2., 4., 8.], dtype=float32)>"
      ]
     },
     "execution_count": 114,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#指数和对数运算\n",
    "x = tf.constant([1.,2.,3.])\n",
    "2**x  #指数运算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(), dtype=float32, numpy=2.7182817>"
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.exp(1.)  #自然指数运算   对于自然指数e 𝑥 ，可以通过 tf.exp(x)实现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(), dtype=float32, numpy=3.0>"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = tf.exp(3.)\n",
    "tf.math.log(x)   #自然对数log e 可以通过 tf.math.log(x)实现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(4, 3, 28, 2), dtype=float32, numpy=\n",
       "array([[[[-8.86358738e-01, -8.79226685e-01],\n",
       "         [ 1.68067718e+00, -4.38931656e+00],\n",
       "         [ 7.57399654e+00,  1.96850681e+00],\n",
       "         [-2.47068071e+00,  6.50001049e-01],\n",
       "         [ 5.61204338e+00,  6.79285526e-01],\n",
       "         [ 1.10984707e+01,  7.69518423e+00],\n",
       "         [ 1.19397473e+00,  1.42242551e+00],\n",
       "         [ 2.93705368e+00, -1.52658010e+00],\n",
       "         [-1.15950699e+01, -8.86738205e+00],\n",
       "         [-2.09413767e+00, -2.66914392e+00],\n",
       "         [-8.78989935e-01, -1.38401775e+01],\n",
       "         [-1.94505954e+00,  1.01562319e+01],\n",
       "         [-4.04333639e+00, -2.91845083e-01],\n",
       "         [-7.67633104e+00,  7.42494631e+00],\n",
       "         [-3.90825367e+00, -4.01167965e+00],\n",
       "         [-2.19410038e+00,  8.24174523e-01],\n",
       "         [ 1.44759345e+00,  1.52368426e+00],\n",
       "         [ 1.33315687e+01, -5.89068604e+00],\n",
       "         [-5.66041470e+00,  1.18041782e+01],\n",
       "         [ 5.35848141e+00,  5.35724831e+00],\n",
       "         [-2.44151831e+00,  1.17751446e+01],\n",
       "         [ 1.04438341e+00,  5.28478003e+00],\n",
       "         [ 4.16681576e+00, -1.12437134e+01],\n",
       "         [ 1.08982849e+01, -9.50876713e-01],\n",
       "         [-5.94616222e+00, -2.31756854e+00],\n",
       "         [ 1.09771223e+01, -8.86823559e+00],\n",
       "         [-2.75805163e+00,  1.56141484e+00],\n",
       "         [-1.06758537e+01,  6.28173971e+00]],\n",
       "\n",
       "        [[-5.43352604e-01, -4.47580433e+00],\n",
       "         [ 3.20702863e+00, -1.10223265e+01],\n",
       "         [ 2.01466370e+00,  5.37240744e+00],\n",
       "         [-8.11177444e+00,  1.62201233e+01],\n",
       "         [-1.05316029e+01,  5.79850864e+00],\n",
       "         [ 1.70827031e+00, -8.87096977e+00],\n",
       "         [-7.13495827e+00, -8.81465721e+00],\n",
       "         [-4.12039995e+00, -1.23265991e+01],\n",
       "         [-1.17252550e+01, -1.51440001e+00],\n",
       "         [-6.08520222e+00, -1.02403612e+01],\n",
       "         [ 7.32436419e-01, -5.22467709e+00],\n",
       "         [-1.04507141e+01,  3.98798966e+00],\n",
       "         [-1.36698189e+01, -5.42282152e+00],\n",
       "         [ 8.11310291e+00,  1.05221806e+01],\n",
       "         [-1.77746105e+00, -2.78157520e+00],\n",
       "         [ 1.49818432e+00,  6.00029039e+00],\n",
       "         [-1.03356242e+00,  3.32563734e+00],\n",
       "         [ 7.20448208e+00, -5.07494879e+00],\n",
       "         [ 3.57818675e+00, -6.06996059e+00],\n",
       "         [-3.23429942e+00, -4.67520905e+00],\n",
       "         [-2.59706664e+00, -1.11528702e+01],\n",
       "         [-6.78333378e+00,  9.82744598e+00],\n",
       "         [ 4.97251940e+00, -6.80564022e+00],\n",
       "         [-1.87482262e+00,  5.10187244e+00],\n",
       "         [-3.18275452e+00, -9.10482788e+00],\n",
       "         [-4.42022514e+00, -9.11373901e+00],\n",
       "         [-4.13508892e+00,  4.24957085e+00],\n",
       "         [ 4.65266609e+00, -3.48464918e+00]],\n",
       "\n",
       "        [[-4.88186359e-01, -6.70142460e+00],\n",
       "         [-1.50894952e+00,  5.02703309e-01],\n",
       "         [ 1.01797199e+00,  5.71007204e+00],\n",
       "         [-3.57927227e+00,  1.81217897e+00],\n",
       "         [-2.65555906e+00, -4.10318565e+00],\n",
       "         [ 1.41495228e+00, -2.19614923e-01],\n",
       "         [-2.50364232e+00, -6.86276245e+00],\n",
       "         [-9.82257462e+00,  2.05463481e+00],\n",
       "         [-5.99681854e+00, -2.50900602e+00],\n",
       "         [-1.70650077e+00, -2.86814880e+00],\n",
       "         [-5.45952034e+00,  6.30671597e+00],\n",
       "         [-7.58321714e+00, -3.02664459e-01],\n",
       "         [-7.36083364e+00,  8.17521381e+00],\n",
       "         [ 9.16802406e+00, -5.04503775e+00],\n",
       "         [ 3.64818192e+00,  6.66566563e+00],\n",
       "         [ 4.14366293e+00,  2.13496232e+00],\n",
       "         [ 6.36580849e+00,  2.97337461e+00],\n",
       "         [ 4.49382782e+00,  1.76153767e+00],\n",
       "         [ 1.90589690e+00,  1.69367523e+01],\n",
       "         [ 4.59686136e+00,  1.03827372e+01],\n",
       "         [-3.17787933e+00,  1.98881316e+00],\n",
       "         [ 7.11953688e+00, -5.73933220e+00],\n",
       "         [-2.25866318e+00, -2.64825535e+00],\n",
       "         [ 6.42665195e+00, -3.43596888e+00],\n",
       "         [ 7.36553288e+00, -2.59080172e-01],\n",
       "         [-4.96805573e+00,  7.07852221e+00],\n",
       "         [ 6.19597483e+00,  7.99691248e+00],\n",
       "         [ 9.07695103e+00, -3.28787327e+00]]],\n",
       "\n",
       "\n",
       "       [[[-3.93820810e+00,  3.52793336e-02],\n",
       "         [ 4.40110350e+00, -1.29892559e+01],\n",
       "         [-3.11697483e-01,  4.12949419e+00],\n",
       "         [ 5.28076839e+00, -6.47229481e+00],\n",
       "         [-1.24844780e+01, -1.47097445e+00],\n",
       "         [-4.31860542e+00, -6.17707014e+00],\n",
       "         [ 3.87420082e+00,  1.13418369e+01],\n",
       "         [-9.89007759e+00, -8.59958053e-01],\n",
       "         [ 1.78909302e-01,  8.23918343e+00],\n",
       "         [ 4.51331425e+00, -1.06031532e+01],\n",
       "         [ 1.85374880e+00, -1.10087252e+00],\n",
       "         [ 4.24355507e+00,  2.50768328e+00],\n",
       "         [-3.93936276e+00,  3.77604294e+00],\n",
       "         [ 6.22561312e+00,  1.27555072e+00],\n",
       "         [ 1.36939657e+00,  6.90936089e-01],\n",
       "         [ 1.01616650e+01,  1.99415779e+00],\n",
       "         [-1.44851551e+01, -4.37831640e-01],\n",
       "         [-7.48029709e-01,  1.84839268e+01],\n",
       "         [ 1.56950819e+00, -1.53161883e-01],\n",
       "         [-2.28886747e+00, -9.10961628e-03],\n",
       "         [ 5.83383179e+00,  1.03572159e+01],\n",
       "         [-8.43952656e+00,  8.78158331e-01],\n",
       "         [-6.04284382e+00, -1.86899967e+01],\n",
       "         [-7.61551666e+00, -1.36802888e+00],\n",
       "         [-1.29333448e+00,  8.95475507e-01],\n",
       "         [-3.65930080e-01, -4.39354849e+00],\n",
       "         [-5.69362926e+00,  7.14447403e+00],\n",
       "         [ 5.60571480e+00,  7.54404306e-01]],\n",
       "\n",
       "        [[ 4.83272600e+00,  2.03679347e+00],\n",
       "         [ 1.90849447e+00,  2.84036493e+00],\n",
       "         [-2.25693655e+00, -7.39943981e-02],\n",
       "         [ 2.58879709e+00, -1.24931872e-01],\n",
       "         [ 3.98916364e+00,  1.33360338e+00],\n",
       "         [ 3.68982840e+00,  2.64111233e+00],\n",
       "         [-2.12780309e+00,  4.40274048e+00],\n",
       "         [ 1.02597160e+01, -9.45434189e+00],\n",
       "         [ 5.02337933e+00, -3.94498014e+00],\n",
       "         [ 8.65221214e+00, -1.23753338e+01],\n",
       "         [ 6.69333220e+00, -1.18992538e+01],\n",
       "         [ 1.48401165e+00, -1.95129895e+00],\n",
       "         [-3.66758227e+00,  7.41115952e+00],\n",
       "         [-2.73301578e+00, -3.68009329e-01],\n",
       "         [-1.73802423e+00,  2.59097099e+00],\n",
       "         [ 2.13120031e+00, -7.07073116e+00],\n",
       "         [-3.38035583e+00, -1.48097157e+00],\n",
       "         [-8.49792957e-01, -4.64852953e+00],\n",
       "         [-1.84722424e-01, -2.74652433e+00],\n",
       "         [ 3.81615520e-01,  6.36740589e+00],\n",
       "         [-6.95328856e+00,  3.60596585e+00],\n",
       "         [ 1.49116755e-01, -3.24895024e-01],\n",
       "         [-2.60042167e+00, -4.41707325e+00],\n",
       "         [ 6.52540922e-01,  1.36052763e+00],\n",
       "         [-2.30202532e+00, -4.50726223e+00],\n",
       "         [ 4.35436249e-01, -2.07932770e-01],\n",
       "         [-4.75844955e+00,  8.26992416e+00],\n",
       "         [-2.91069031e-01,  3.70544219e+00]],\n",
       "\n",
       "        [[ 1.56293154e+00, -4.63012314e+00],\n",
       "         [-6.75281429e+00, -9.93933678e+00],\n",
       "         [ 4.54773855e+00,  9.96516824e-01],\n",
       "         [-2.45537114e+00, -6.74174261e+00],\n",
       "         [ 8.77169037e+00, -1.99207902e-01],\n",
       "         [-4.50592709e+00,  5.52354431e+00],\n",
       "         [ 4.98241234e+00, -1.55550766e+00],\n",
       "         [-1.35413575e+00, -3.13794613e-01],\n",
       "         [ 4.22613668e+00, -7.76104259e+00],\n",
       "         [ 8.82896614e+00,  8.08934402e+00],\n",
       "         [ 4.87286854e+00,  3.41364002e+00],\n",
       "         [ 2.81021357e-01,  8.54418850e+00],\n",
       "         [-3.18558502e+00,  1.15442448e+01],\n",
       "         [ 8.30837345e+00,  7.76717186e-01],\n",
       "         [ 8.31937551e-01,  7.58046055e+00],\n",
       "         [ 2.37912703e+00,  1.40255380e+00],\n",
       "         [ 1.98225296e+00,  8.18536091e+00],\n",
       "         [-2.33350515e+00,  6.10572338e+00],\n",
       "         [-1.00550766e+01,  8.48144150e+00],\n",
       "         [ 3.68711758e+00,  2.88345218e+00],\n",
       "         [ 5.00269365e+00,  8.30952525e-01],\n",
       "         [ 2.53737760e+00,  1.10129976e+00],\n",
       "         [-1.07069492e+01,  4.17583370e+00],\n",
       "         [-3.39336753e+00, -4.87783313e-01],\n",
       "         [ 5.58599281e+00,  1.07951107e+01],\n",
       "         [-7.11627960e-01, -2.98308516e+00],\n",
       "         [ 8.37559223e+00, -1.22134113e+00],\n",
       "         [-4.62489796e+00, -1.75293589e+00]]],\n",
       "\n",
       "\n",
       "       [[[-7.16311502e+00, -6.69712019e+00],\n",
       "         [ 1.01241627e+01, -3.84212756e+00],\n",
       "         [ 3.55038404e-01,  2.98419094e+00],\n",
       "         [ 1.92718744e+00,  1.67527437e+00],\n",
       "         [-7.73135424e+00, -2.30892086e+00],\n",
       "         [ 6.13056993e+00, -1.83666408e+00],\n",
       "         [ 7.76902676e+00, -2.41001320e+00],\n",
       "         [ 6.31332922e+00,  1.33431435e+01],\n",
       "         [ 6.96342659e+00, -7.25560188e+00],\n",
       "         [-3.95850801e+00,  1.57160878e+00],\n",
       "         [-9.38478231e-01,  1.09985542e+01],\n",
       "         [-6.00660229e+00, -9.25037766e+00],\n",
       "         [ 4.77657890e+00, -6.71226501e+00],\n",
       "         [ 4.34748983e+00, -2.40196514e+00],\n",
       "         [ 7.42183971e+00, -4.11708403e+00],\n",
       "         [ 4.24203300e+00,  2.85729885e+00],\n",
       "         [-1.74556637e+00,  9.28844547e+00],\n",
       "         [ 3.12191868e+00, -5.63736796e-01],\n",
       "         [ 1.20114050e+01, -2.58526874e+00],\n",
       "         [ 1.43847418e+01,  9.31571484e-01],\n",
       "         [-7.60775280e+00,  6.42560434e+00],\n",
       "         [ 7.60283136e+00,  2.04509187e+00],\n",
       "         [-2.84280181e+00,  6.69827938e-01],\n",
       "         [-2.91625237e+00,  5.49021602e-01],\n",
       "         [-8.38509369e+00, -5.57675362e-01],\n",
       "         [ 6.01160717e+00,  2.09952641e+00],\n",
       "         [-7.75964975e+00, -7.28210258e+00],\n",
       "         [-4.91795349e+00, -8.91657591e-01]],\n",
       "\n",
       "        [[ 8.41362953e-01, -7.56746244e+00],\n",
       "         [ 3.51861167e+00, -9.61250305e+00],\n",
       "         [-1.15930252e+01,  3.62413502e+00],\n",
       "         [ 1.23378301e+00,  9.53743100e-01],\n",
       "         [-7.66084099e+00,  2.88807726e+00],\n",
       "         [-3.54291010e+00, -3.94214439e+00],\n",
       "         [ 9.30741119e+00, -3.24247789e+00],\n",
       "         [-2.28285313e+00, -4.67684865e-01],\n",
       "         [-9.46895599e+00,  2.83493972e+00],\n",
       "         [-1.08159466e+01,  4.61029148e+00],\n",
       "         [-7.04492378e+00,  1.51098633e+00],\n",
       "         [-7.28900623e+00, -1.72677021e+01],\n",
       "         [-4.36945343e+00, -3.69385028e+00],\n",
       "         [ 9.37014294e+00, -3.50314879e+00],\n",
       "         [ 2.63096809e-01,  4.24955511e+00],\n",
       "         [ 1.14196005e+01, -3.34631515e+00],\n",
       "         [-4.59482908e-01,  6.51860189e+00],\n",
       "         [-1.44607334e+01, -2.07226849e+00],\n",
       "         [-1.12410440e+01,  1.23052998e+01],\n",
       "         [-5.38428783e+00,  1.77078724e-01],\n",
       "         [ 7.34940243e+00, -3.22942448e+00],\n",
       "         [-2.99718642e+00,  8.00201130e+00],\n",
       "         [ 1.28754930e+01,  9.17030096e-01],\n",
       "         [-5.49082279e+00, -1.22458100e+00],\n",
       "         [-1.76213551e+00,  2.10090017e+00],\n",
       "         [-7.72975206e+00,  3.46690559e+00],\n",
       "         [-8.73149157e-01,  7.56253719e-01],\n",
       "         [-4.39443207e+00, -2.83784962e+00]],\n",
       "\n",
       "        [[-3.97203016e+00,  6.17210293e+00],\n",
       "         [-2.40901041e+00,  4.39632416e+00],\n",
       "         [-2.49938130e+00,  1.31564307e+00],\n",
       "         [-7.86485910e+00, -9.52413559e-01],\n",
       "         [ 4.15072441e-02,  2.29283905e+00],\n",
       "         [ 5.45573997e+00,  1.08772779e+00],\n",
       "         [-1.51007977e+01,  1.48062687e+01],\n",
       "         [-2.20773864e+00, -1.24707718e+01],\n",
       "         [ 5.24407101e+00,  2.61261082e+00],\n",
       "         [ 1.35698748e+00,  6.91458225e+00],\n",
       "         [-2.82161903e+00, -1.30157137e+00],\n",
       "         [ 8.07656860e+00, -1.22412148e+01],\n",
       "         [ 1.79554033e+00,  2.39733052e+00],\n",
       "         [-3.00077486e+00, -1.03218870e+01],\n",
       "         [-7.44369125e+00, -3.42939305e+00],\n",
       "         [-4.59008741e+00,  2.30075693e+00],\n",
       "         [ 4.26883316e+00, -6.39721394e-01],\n",
       "         [-1.50479722e+00, -3.73952770e+00],\n",
       "         [ 1.54619110e+00,  9.14700127e+00],\n",
       "         [ 1.15011728e+00, -3.50984097e+00],\n",
       "         [ 1.39191842e+00, -8.28692436e-01],\n",
       "         [-1.96472526e+00,  1.01804676e+01],\n",
       "         [-9.15078354e+00,  1.47819195e+01],\n",
       "         [ 5.34294605e-01,  1.23896236e+01],\n",
       "         [-1.08566151e+01, -2.66994333e+00],\n",
       "         [-3.98233891e+00,  1.55759697e+01],\n",
       "         [ 6.98899746e-01,  4.43096542e+00],\n",
       "         [ 1.70528817e+00, -3.24484253e+00]]],\n",
       "\n",
       "\n",
       "       [[[ 9.66225815e+00,  4.13145304e+00],\n",
       "         [-1.91633511e+00, -1.09984636e+01],\n",
       "         [ 4.99602318e+00,  9.31182384e-01],\n",
       "         [-2.52728081e+00,  9.71955061e-01],\n",
       "         [-6.34801269e-01, -3.50143671e+00],\n",
       "         [ 6.80101299e+00, -7.98845291e-02],\n",
       "         [ 1.14837861e+00, -8.85958672e-01],\n",
       "         [ 1.75653458e+00,  1.46889639e+00],\n",
       "         [ 5.43404865e+00, -8.63904476e-01],\n",
       "         [ 6.39014864e+00, -9.26702881e+00],\n",
       "         [ 2.75997639e+00,  3.52037811e+00],\n",
       "         [-1.15838852e+01,  1.04138279e+01],\n",
       "         [ 7.98183143e-01, -3.72454047e+00],\n",
       "         [-2.82479143e+00,  5.67551661e+00],\n",
       "         [-7.01078320e+00,  6.55466795e-01],\n",
       "         [ 5.72791696e-01, -3.67924833e+00],\n",
       "         [-4.53015280e+00, -3.66936922e-02],\n",
       "         [-1.91565228e+00, -8.41901898e-01],\n",
       "         [-8.17989254e+00,  1.86793060e+01],\n",
       "         [ 3.68798590e+00, -1.97433329e+00],\n",
       "         [ 4.56160355e+00,  2.05860281e+00],\n",
       "         [-7.11866331e+00,  5.05594397e+00],\n",
       "         [-3.82747078e+00, -1.28794396e+00],\n",
       "         [-4.29761457e+00, -9.26165390e+00],\n",
       "         [-5.02350569e-01, -5.62938118e+00],\n",
       "         [ 3.19542861e+00, -5.18247366e+00],\n",
       "         [-2.59186840e+00, -4.59028125e-01],\n",
       "         [-6.14614248e-01,  3.23674965e+00]],\n",
       "\n",
       "        [[ 4.87625837e-01,  7.24122286e+00],\n",
       "         [-3.77150774e-01, -8.42789054e-01],\n",
       "         [-1.08337421e+01,  1.81756043e+00],\n",
       "         [ 4.82745266e+00,  3.12292433e+00],\n",
       "         [-2.18204451e+00, -3.44397187e+00],\n",
       "         [-6.33944654e+00, -5.79172492e-01],\n",
       "         [ 3.50137305e+00, -7.66184711e+00],\n",
       "         [-2.57348132e+00, -6.42904854e+00],\n",
       "         [ 2.89267921e+00,  7.88593245e+00],\n",
       "         [ 9.35976601e+00,  7.57231903e+00],\n",
       "         [-4.44025755e+00, -8.17514956e-01],\n",
       "         [-9.63900375e+00, -5.89461470e+00],\n",
       "         [ 8.22099328e-01,  7.01861334e+00],\n",
       "         [-1.30117345e+00,  6.49728060e+00],\n",
       "         [ 3.79794776e-01,  6.86711788e-01],\n",
       "         [-9.24943686e-01,  4.55931282e+00],\n",
       "         [ 7.63187504e+00,  5.40053606e+00],\n",
       "         [ 9.63268280e-01, -5.18310261e+00],\n",
       "         [-2.68621802e-01,  3.75926733e-01],\n",
       "         [-1.01027822e+01, -5.68830156e+00],\n",
       "         [ 3.26365304e+00,  3.19023132e-02],\n",
       "         [ 6.86579037e+00,  8.65176916e-01],\n",
       "         [-6.68940663e-01, -7.69794989e+00],\n",
       "         [-9.82823086e+00,  4.42004251e+00],\n",
       "         [-2.97379112e+00,  4.07372236e+00],\n",
       "         [ 4.21276569e+00,  3.10669518e+00],\n",
       "         [ 5.38385820e+00,  5.26278114e+00],\n",
       "         [ 1.37199426e+00,  1.39733374e+00]],\n",
       "\n",
       "        [[ 1.52326822e+00,  8.23653698e-01],\n",
       "         [ 8.58587933e+00, -3.22127008e+00],\n",
       "         [-5.12030649e+00,  1.32284975e+00],\n",
       "         [ 3.80670238e+00, -4.57648087e+00],\n",
       "         [ 6.41486120e+00,  2.08551359e+00],\n",
       "         [-1.13469040e+00, -4.59639597e+00],\n",
       "         [-3.30717564e-01,  3.13255715e+00],\n",
       "         [-4.25356722e+00,  4.00068951e+00],\n",
       "         [-6.57818174e+00, -6.48833227e+00],\n",
       "         [ 7.49914551e+00,  8.37246799e+00],\n",
       "         [ 6.01797247e+00,  1.58854923e+01],\n",
       "         [-9.44330120e+00, -9.15395355e+00],\n",
       "         [-9.87687111e-02,  4.06208515e+00],\n",
       "         [-1.12684383e+01, -5.01823843e-01],\n",
       "         [-1.07824335e+01, -1.28467770e+01],\n",
       "         [ 1.83935666e+00,  2.18012929e+00],\n",
       "         [-1.30082238e+00,  5.86299753e+00],\n",
       "         [-6.77991152e-01, -2.37130904e+00],\n",
       "         [ 5.45333028e-01,  1.71098948e-01],\n",
       "         [-4.15193081e+00,  1.29038334e-01],\n",
       "         [-7.87366915e+00,  2.54851818e-01],\n",
       "         [-5.50344563e+00,  4.55584192e+00],\n",
       "         [-1.20051174e+01, -2.63787389e-01],\n",
       "         [ 1.30319977e+00,  5.85887575e+00],\n",
       "         [ 1.44143972e+01,  6.72193527e+00],\n",
       "         [ 6.20837975e+00, -5.87225628e+00],\n",
       "         [-6.72004700e+00, -3.54659796e+00],\n",
       "         [ 4.42091703e-01, -8.76413345e+00]]]], dtype=float32)>"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#矩阵相乘运算   @、 tf.matmul(a, b)实现\n",
    "a = tf.random.normal([4,3,28,32])\n",
    "b = tf.random.normal([4,3,32,2])\n",
    "\n",
    "a@b  #批量形式矩阵相乘"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 前向传播实战"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "plt.rcParams['font.size'] = 16\n",
    "plt.rcParams['font.family'] = ['STKaiti']\n",
    "plt.rcParams['axes.unicode_minus'] = False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os \n",
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "from tensorflow.keras import layers,optimizers,datasets\n",
    "\n",
    "#读取数据\n",
    "def load_data():\n",
    "    (x, y), (x_val, y_val) = datasets.mnist.load_data()\n",
    "    x = tf.convert_to_tensor(x, dtype=tf.float32)/255.   #转换为张量\n",
    "    y = tf.convert_to_tensor(y, dtype=tf.int32)\n",
    "    y = tf.one_hot(y, depth=10)   # one-hot编码\n",
    "    x = tf.reshape(x,(-1,28*28))\n",
    "    print(x.shape, y.shape)\n",
    "\n",
    "    train_dataset = tf.data.Dataset.from_tensor_slices((x, y))  #构建数据集对象\n",
    "    train_dataset = train_dataset.batch(200) #批量训练\n",
    "    return train_dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "#初始化参数\n",
    "#第一层参数\n",
    "def init_paramaters():\n",
    "    # 每层的张量都需要被优化，故使用 Variable 类型，并使用截断的正太分布初始化权值张量\n",
    "    # 偏置向量初始化为 0 即可\n",
    "    w1 = tf.Variable(tf.random.truncated_normal([784,256], stddev=0.1))  #截断正态分布为初始参数\n",
    "    b1 = tf.Variable(tf.zeros([256]))\n",
    "\n",
    "    #第二层参数\n",
    "    w2 = tf.Variable(tf.random.truncated_normal([256, 128], stddev=0.1))\n",
    "    b2 = tf.Variable(tf.zeros([128]))\n",
    "\n",
    "    #第三层参数\n",
    "    w3 = tf.Variable(tf.random.truncated_normal([128, 10], stddev=0.1))\n",
    "    b3 = tf.Variable(tf.zeros([10]))\n",
    "    \n",
    "    return w1, b1, w2, b2, w3, b3\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#构建网络\n",
    "def train_epoch(epoch, train_dataset, w1, b1, w2, b2, w3, b3, lr= 0.001):\n",
    "    for step, (x,y) in enumerate(train_dataset):\n",
    "        with tf.GradientTape() as tape:\n",
    "            #第一层计算\n",
    "            h1 = x@w1 + tf.broadcast_to(b1, (x.shape[0], 256))\n",
    "            h1 = tf.nn.relu(h1)  #激活函数\n",
    "            \n",
    "            h2 = h1@w2 + b2\n",
    "            h2 = tf.nn.relu(h2)\n",
    "            \n",
    "            out = h2@w3 + b3 \n",
    "            \n",
    "            #计算损失值： 均方误差\n",
    "            loss = tf.square(y-out)\n",
    "            \n",
    "            loss = tf.reduce_mean(loss)\n",
    "            \n",
    "            #自动梯度下降\n",
    "            grads = tape.gradient(loss, [w1,b1,w2,b2,w3,b3])\n",
    "        \n",
    "        #梯度更新，调整参数 ,assign_sub 将当前值减去参数值，原地更新\n",
    "        w1.assign_sub(lr * grads[0])\n",
    "        b1.assign_sub(lr * grads[1])\n",
    "        w2.assign_sub(lr * grads[2])\n",
    "        b2.assign_sub(lr * grads[3])\n",
    "        w3.assign_sub(lr * grads[4])\n",
    "        b3.assign_sub(lr * grads[5])\n",
    "        \n",
    "        if step % 100 == 0:\n",
    "            print(epoch, step, 'loss:', loss.numpy())\n",
    "    return loss.numpy()\n",
    "\n",
    "def train(epochs):\n",
    "    losses = []\n",
    "    train_dataset = load_data()\n",
    "    w1, b1, w2,b2, w3, b3 = init_paramaters()\n",
    "    for epoch in range(epochs):\n",
    "        loss = train_epoch(epoch, train_dataset, w1, b1, w2, b2, w3, b3, lr = 0.001)\n",
    "        losses.append(loss)\n",
    "    \n",
    "    x = [i for i in range(0, epochs)]\n",
    "    \n",
    "    #绘制曲线\n",
    "    plt.plot(x, losses, color='blue', marker='s', label='训练')\n",
    "    plt.xlabel('Epoch')\n",
    "    plt.ylabel('MSE')\n",
    "    plt.legend()\n",
    "    plt.show()\n",
    "    plt.close()\n",
    "\n",
    "train(epochs=20)\n",
    "            "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<br>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Tensorflow 进阶"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 合并与分割"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(10, 35, 8), dtype=float32, numpy=\n",
       "array([[[ 1.0799489 ,  0.899349  , -2.180079  , ..., -0.30435482,\n",
       "         -0.35004103, -0.6555609 ],\n",
       "        [ 2.5100176 , -0.90481424,  0.6161717 , ..., -1.011682  ,\n",
       "         -0.09831019, -0.36287123],\n",
       "        [-1.2780861 ,  0.78362507, -0.31111524, ...,  1.4133024 ,\n",
       "          1.1229861 ,  0.5154373 ],\n",
       "        ...,\n",
       "        [ 0.14787512,  1.0377079 ,  2.3836877 , ...,  0.28264812,\n",
       "         -1.8073322 , -0.12416255],\n",
       "        [ 0.58093935,  3.1015356 ,  0.634537  , ..., -0.3530599 ,\n",
       "          2.2187107 , -1.0953927 ],\n",
       "        [-0.37941283,  1.522293  , -1.1211531 , ..., -0.590488  ,\n",
       "          0.05573006,  1.0182384 ]],\n",
       "\n",
       "       [[ 0.72628266, -0.93679297, -0.04072686, ...,  0.07520822,\n",
       "          0.71642286, -1.3107572 ],\n",
       "        [ 0.03098985,  1.9384624 , -1.311715  , ...,  0.6635544 ,\n",
       "         -2.3744657 ,  2.2092495 ],\n",
       "        [ 0.12475111, -0.5849178 , -0.33711502, ..., -1.1710213 ,\n",
       "         -1.2641448 , -0.44502673],\n",
       "        ...,\n",
       "        [-0.2197041 ,  1.6559778 ,  0.16445112, ..., -0.38016155,\n",
       "          0.60158414, -0.34714183],\n",
       "        [ 0.45028722, -0.69928235, -0.20923552, ...,  1.1471007 ,\n",
       "         -0.00841808, -1.3264346 ],\n",
       "        [ 0.7990437 , -0.05718963,  0.6098722 , ...,  0.06873131,\n",
       "         -1.158269  , -1.6860342 ]],\n",
       "\n",
       "       [[ 0.3273943 ,  0.5619474 , -1.4757226 , ...,  1.3360876 ,\n",
       "          1.2845844 ,  0.91948855],\n",
       "        [-0.7008167 ,  0.18065645,  0.8840194 , ...,  1.2935935 ,\n",
       "          0.77743095,  1.1812109 ],\n",
       "        [ 1.0850652 , -0.57818145, -0.07444313, ..., -0.1074549 ,\n",
       "         -0.08317231, -0.7943029 ],\n",
       "        ...,\n",
       "        [ 0.53064406, -0.9795336 ,  1.0335073 , ..., -0.5881621 ,\n",
       "          0.3680832 , -1.0072416 ],\n",
       "        [-0.03627633,  0.14003114,  0.4388656 , ..., -0.4161134 ,\n",
       "         -1.1019837 , -0.07216117],\n",
       "        [-0.3979361 , -0.6517944 ,  1.3771288 , ..., -0.56721884,\n",
       "         -0.10345376,  2.480649  ]],\n",
       "\n",
       "       ...,\n",
       "\n",
       "       [[-0.698056  ,  1.2784383 , -0.59253556, ..., -1.7415414 ,\n",
       "          1.2446861 , -1.2628633 ],\n",
       "        [ 0.2857003 , -0.7439026 ,  0.13833104, ..., -0.5396722 ,\n",
       "          0.09665849, -0.92249566],\n",
       "        [-1.2038219 , -1.1834656 ,  0.83002055, ...,  2.7756715 ,\n",
       "          0.05392847,  0.06284437],\n",
       "        ...,\n",
       "        [ 0.11384197, -0.97281516,  0.19471005, ..., -0.6582449 ,\n",
       "         -0.37310457, -0.78259355],\n",
       "        [-1.4889334 ,  2.9286976 , -0.63455594, ..., -0.2363486 ,\n",
       "         -0.6148257 ,  0.0043745 ],\n",
       "        [ 1.0639708 ,  1.0864635 , -0.25554326, ...,  1.3855453 ,\n",
       "         -0.01360503,  0.32097608]],\n",
       "\n",
       "       [[-0.13860562,  0.21657783,  0.6308987 , ..., -1.2594041 ,\n",
       "          0.17593369,  0.05216269],\n",
       "        [ 1.1324785 , -0.7240074 ,  0.88110137, ...,  0.8384126 ,\n",
       "         -1.256728  ,  1.0145873 ],\n",
       "        [ 1.1699622 , -1.2757359 , -0.0442729 , ..., -1.4581543 ,\n",
       "          0.21922302, -0.43566433],\n",
       "        ...,\n",
       "        [ 0.26762003,  1.159661  ,  0.27081203, ...,  0.23062642,\n",
       "          0.5479438 , -0.26478174],\n",
       "        [ 0.2594739 ,  0.83006763,  0.99458104, ...,  0.84444654,\n",
       "          0.98740226, -0.7168715 ],\n",
       "        [ 1.0747705 , -0.21448234, -1.0145669 , ..., -1.0888087 ,\n",
       "          0.38075513,  0.33140254]],\n",
       "\n",
       "       [[ 0.25786784,  0.8665555 ,  1.9862657 , ..., -1.4181556 ,\n",
       "          0.2688513 ,  1.1715347 ],\n",
       "        [ 2.1187143 , -0.53243417, -0.6773982 , ..., -0.9014703 ,\n",
       "          2.1197968 , -1.7831557 ],\n",
       "        [ 0.1751684 , -0.7532222 ,  0.06099452, ..., -1.7561516 ,\n",
       "         -0.41494513,  0.06397974],\n",
       "        ...,\n",
       "        [-0.00372068, -0.16107322,  0.71892214, ...,  0.9894731 ,\n",
       "         -0.37999257, -0.5819761 ],\n",
       "        [-1.3550032 ,  0.355762  , -0.608958  , ..., -0.21688183,\n",
       "          1.9117231 ,  0.30616668],\n",
       "        [-0.78571945,  1.9184121 , -0.61537474, ..., -0.00410032,\n",
       "         -0.8449349 , -1.3637501 ]]], dtype=float32)>"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#合并: 拼接  ，不会创建新维度\n",
    "#f.concat(tensors, axis)函数拼接张量，其中参数tensors 保存了所有需要合并的张量 List，axis 参数指定需要合并的维度索引。\n",
    "a = tf.random.normal([4,35,8])\n",
    "b = tf.random.normal([6,35,8])\n",
    "tf.concat([a,b], axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(6, 35, 11), dtype=float32, numpy=\n",
       "array([[[ 1.1034431 , -0.865698  , -0.35426137, ..., -0.02186074,\n",
       "          1.237708  , -1.4589379 ],\n",
       "        [-0.43340462,  0.7770602 ,  0.4475611 , ...,  0.6817288 ,\n",
       "          1.9976966 , -0.21498266],\n",
       "        [ 1.1009604 , -0.18966055, -1.3575768 , ..., -1.6263229 ,\n",
       "          0.21090205, -1.0951955 ],\n",
       "        ...,\n",
       "        [-1.1943852 , -0.17736754, -0.7706847 , ..., -0.5546474 ,\n",
       "          1.1215239 ,  0.12702173],\n",
       "        [-0.00883565, -2.051848  ,  0.26814798, ..., -0.2681953 ,\n",
       "         -1.5207751 , -0.9818159 ],\n",
       "        [ 0.93508685, -0.5340139 , -0.1322677 , ..., -0.8425639 ,\n",
       "         -0.09708061, -1.3859127 ]],\n",
       "\n",
       "       [[-0.734155  ,  0.2933905 , -0.9274688 , ..., -0.5736155 ,\n",
       "         -0.7747554 ,  0.3425928 ],\n",
       "        [ 0.2766252 ,  1.0625503 , -1.8277583 , ..., -0.30526274,\n",
       "          0.8025379 , -0.5208213 ],\n",
       "        [-0.81506914,  1.3084142 , -1.1326295 , ...,  1.7300013 ,\n",
       "         -1.1951208 ,  0.8720745 ],\n",
       "        ...,\n",
       "        [ 0.95905346,  0.98511827, -2.2712605 , ..., -0.41340658,\n",
       "         -0.851915  ,  0.76117945],\n",
       "        [ 1.7034305 ,  0.4077583 , -0.3690071 , ...,  0.91074514,\n",
       "          0.7100294 ,  0.214619  ],\n",
       "        [-1.4102603 , -0.32343122,  0.13911325, ..., -1.4933611 ,\n",
       "         -0.00417833, -1.2786107 ]],\n",
       "\n",
       "       [[ 1.154821  ,  0.977257  ,  1.2237171 , ..., -0.10038631,\n",
       "         -0.90854985,  0.61261094],\n",
       "        [ 0.27232674, -1.35283   , -1.6857266 , ...,  0.30921835,\n",
       "         -0.39279452,  0.6284266 ],\n",
       "        [ 0.29230928,  0.39132062, -0.50213826, ..., -0.79584277,\n",
       "         -0.9041592 ,  1.3505707 ],\n",
       "        ...,\n",
       "        [-0.7619533 , -1.9663491 , -0.03225826, ..., -0.27637523,\n",
       "          0.62892205, -0.7836528 ],\n",
       "        [ 0.18744878, -0.8011443 ,  0.70355934, ...,  0.1106569 ,\n",
       "          2.6028242 , -1.8446571 ],\n",
       "        [-0.48272935,  0.5118319 ,  0.40186027, ..., -0.68299365,\n",
       "         -0.58150786,  0.7815736 ]],\n",
       "\n",
       "       [[-0.55893594, -1.46688   ,  0.40930873, ..., -0.14326696,\n",
       "         -1.1622223 ,  1.2347704 ],\n",
       "        [ 1.3607421 ,  0.23268056,  0.28678638, ..., -0.08514082,\n",
       "          0.71101993, -1.5457745 ],\n",
       "        [ 0.80326694,  1.622152  , -0.11765785, ..., -1.1557395 ,\n",
       "          0.52785856,  1.1871988 ],\n",
       "        ...,\n",
       "        [ 0.4743693 ,  2.2436306 , -0.42693198, ..., -0.22438683,\n",
       "         -0.5819304 , -0.4955568 ],\n",
       "        [-0.32284382, -1.5696654 ,  1.1167208 , ...,  0.9147794 ,\n",
       "          1.046437  ,  0.20305067],\n",
       "        [ 0.1292421 ,  0.35372058, -0.85393876, ...,  0.27342504,\n",
       "          0.84066004,  0.5563867 ]],\n",
       "\n",
       "       [[-0.4842205 , -0.63253164, -0.29115552, ...,  0.7233042 ,\n",
       "         -1.192091  , -0.3827248 ],\n",
       "        [ 0.07368629,  1.217131  ,  1.5593197 , ...,  0.8453344 ,\n",
       "         -0.6459453 , -0.33700874],\n",
       "        [ 0.2733836 ,  0.8201067 ,  0.13877878, ..., -0.02653092,\n",
       "          0.6962818 , -0.27756888],\n",
       "        ...,\n",
       "        [ 0.994574  , -0.13209507, -1.3214432 , ...,  0.53906626,\n",
       "          0.7094416 ,  0.9723026 ],\n",
       "        [ 0.37352797, -0.58841324, -1.0611519 , ..., -0.20780864,\n",
       "          0.8063514 ,  0.33669734],\n",
       "        [ 0.873807  , -0.27228615,  2.4119222 , ..., -0.49128994,\n",
       "         -0.56880116, -0.01948396]],\n",
       "\n",
       "       [[-0.12208937, -0.20953871, -0.8949615 , ..., -1.1509343 ,\n",
       "         -0.5312248 ,  0.28164974],\n",
       "        [ 0.25157282, -0.3106427 ,  0.26591974, ..., -0.55525225,\n",
       "         -1.3677012 ,  0.43038455],\n",
       "        [ 2.4494092 , -0.45040873, -1.1677771 , ...,  0.44649974,\n",
       "          0.8149502 , -0.9475799 ],\n",
       "        ...,\n",
       "        [-1.6632315 , -1.0965663 ,  0.32802364, ...,  1.5789322 ,\n",
       "          0.7873313 ,  0.40437326],\n",
       "        [-1.2553235 ,  0.11142091,  0.13132998, ..., -0.46358633,\n",
       "         -0.36658576,  1.5416878 ],\n",
       "        [ 0.779872  , -0.59214306, -0.15267722, ..., -0.3327921 ,\n",
       "          0.07191981,  1.5765113 ]]], dtype=float32)>"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = tf.random.normal([6,35,4])\n",
    "b = tf.random.normal([6,35,7])\n",
    "tf.concat([a,b], axis=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 35, 8), dtype=float32, numpy=\n",
       "array([[[ 4.09129649e-01,  2.14102238e-01, -1.20941937e+00,\n",
       "         -1.02355218e+00,  1.12173760e+00, -7.84766674e-01,\n",
       "          3.69927175e-02, -5.88630199e-01],\n",
       "        [ 2.59118271e+00,  6.43995941e-01, -2.96966165e-01,\n",
       "          1.74391031e-01, -5.63263774e-01,  7.70232737e-01,\n",
       "         -4.75749701e-01,  3.08786845e+00],\n",
       "        [ 4.55419384e-02,  6.24866903e-01, -2.18737870e-01,\n",
       "          5.88258028e-01,  1.99868545e-01,  6.48975194e-01,\n",
       "          8.88250291e-01, -2.99235582e-01],\n",
       "        [-1.17643677e-01,  2.55281441e-02, -6.70454621e-01,\n",
       "         -1.15307681e-01,  3.35659355e-01, -9.42326009e-01,\n",
       "         -9.13730979e-01, -8.38479817e-01],\n",
       "        [ 2.04111028e+00,  4.26394254e-01, -2.32533622e+00,\n",
       "         -3.49585176e-01,  1.24623716e+00,  5.15310764e-01,\n",
       "         -1.02602100e+00,  2.21655935e-01],\n",
       "        [ 1.34170675e+00, -6.98949814e-01, -1.15433276e+00,\n",
       "          8.39971542e-01,  6.26305819e-01,  2.01773953e+00,\n",
       "          1.06107688e+00,  8.68860483e-01],\n",
       "        [-1.56857729e+00, -1.30654490e+00,  6.71783328e-01,\n",
       "         -7.14620352e-02, -1.13557279e+00, -3.43217701e-01,\n",
       "         -1.59995294e+00, -6.30823895e-02],\n",
       "        [-7.26066679e-02, -1.53422892e-01, -2.86513895e-01,\n",
       "         -8.59884202e-01,  5.27931809e-01, -6.29927695e-01,\n",
       "         -1.78831309e-01,  5.81089377e-01],\n",
       "        [-1.61638212e+00,  7.87182927e-01, -3.88602838e-02,\n",
       "          3.99332821e-01,  1.19178212e+00, -2.66268075e-01,\n",
       "         -2.77875364e-01, -9.67305660e-01],\n",
       "        [ 1.07732308e+00, -8.65140200e-01, -3.24452549e-01,\n",
       "         -2.19274831e+00, -1.36313450e+00,  2.11738318e-01,\n",
       "         -3.05582047e-01,  1.12636923e-03],\n",
       "        [ 7.73646355e-01,  3.55576634e-01,  1.21142280e+00,\n",
       "          1.29804924e-01, -5.69566786e-01,  4.75746006e-01,\n",
       "          3.28276187e-01, -1.28413343e+00],\n",
       "        [-3.75485837e-01, -6.19359948e-02, -1.50900936e+00,\n",
       "          9.86210406e-01,  3.51126492e-01,  1.58756042e+00,\n",
       "         -2.83359319e-01, -8.73685539e-01],\n",
       "        [-1.59858477e+00, -1.20380068e+00,  2.56554633e-01,\n",
       "          2.00371432e+00, -9.81040418e-01, -1.14228153e+00,\n",
       "         -5.51738441e-01,  8.88897955e-01],\n",
       "        [-7.24197567e-01,  5.07628500e-01, -1.90565741e+00,\n",
       "          5.68840742e-01, -8.08478296e-01,  5.96513808e-01,\n",
       "         -1.71411768e-01,  7.18555093e-01],\n",
       "        [-3.83457959e-01, -8.21335733e-01,  4.21150208e-01,\n",
       "          8.49528611e-01, -3.37244481e-01, -3.12643707e-01,\n",
       "         -1.27886191e-01,  6.03059590e-01],\n",
       "        [-7.20120668e-01,  3.01405668e-01,  1.57223120e-01,\n",
       "          1.16132724e+00, -3.65014821e-01,  6.81939721e-01,\n",
       "          2.50117755e+00, -3.08717042e-01],\n",
       "        [-2.16306552e-01, -6.79415047e-01,  5.15455484e-01,\n",
       "         -6.30824506e-01, -5.65615833e-01, -6.59146190e-01,\n",
       "          3.79440159e-01,  4.17466700e-01],\n",
       "        [ 2.81926244e-01,  6.95571184e-01,  7.12001443e-01,\n",
       "         -2.92705059e-01,  2.83316493e-01,  3.75395596e-01,\n",
       "         -5.22808671e-01, -4.38045198e-03],\n",
       "        [ 2.02134058e-01,  1.55127406e+00,  1.59239185e+00,\n",
       "          1.29764652e+00, -1.21913040e+00, -1.11229229e+00,\n",
       "         -6.28901899e-01, -2.46803641e-01],\n",
       "        [-2.86396742e-01,  2.68674105e-01, -1.90860403e+00,\n",
       "         -9.06998992e-01, -8.93471181e-01, -2.17823640e-01,\n",
       "          2.97179252e-01,  7.62174726e-01],\n",
       "        [-8.06514382e-01,  5.73716879e-01,  2.58630037e-01,\n",
       "          1.75304902e+00, -4.33755696e-01, -1.51911294e+00,\n",
       "          8.31190526e-01, -1.82363284e+00],\n",
       "        [ 1.68321013e+00, -2.08264679e-01,  1.42392838e+00,\n",
       "          8.25811565e-01, -1.94294155e-01,  9.48379815e-01,\n",
       "          7.26179123e-01, -3.01701128e-01],\n",
       "        [-3.28751444e-03, -6.64505064e-01,  4.82506424e-01,\n",
       "         -3.42280954e-01,  1.15264702e+00,  3.85272682e-01,\n",
       "         -4.89322811e-01,  1.13737524e+00],\n",
       "        [ 2.27940068e-01,  3.21368594e-03, -1.98338069e-02,\n",
       "         -1.77294683e+00,  4.21543717e-02, -2.50042826e-01,\n",
       "         -1.22959077e+00,  5.06281972e-01],\n",
       "        [-2.92486370e-01,  9.74967420e-01,  2.25471210e+00,\n",
       "         -3.10253787e+00, -5.36013484e-01, -9.96305287e-01,\n",
       "          2.52877891e-01, -6.79688573e-01],\n",
       "        [-7.57931888e-01,  2.81451970e-01, -9.21116590e-01,\n",
       "         -2.09972525e+00, -9.91689786e-02,  1.04676731e-01,\n",
       "         -9.88849103e-01, -2.01362018e-02],\n",
       "        [ 1.10895407e+00, -1.09089985e-01,  4.72154289e-01,\n",
       "         -1.35370457e+00,  2.04948813e-01,  2.28166625e-01,\n",
       "          5.39052367e-01,  2.07551479e-01],\n",
       "        [-1.01119387e+00, -6.26454651e-01, -2.73217154e+00,\n",
       "         -2.50664234e-01, -8.13578188e-01, -2.26134449e-01,\n",
       "         -1.85538208e+00, -9.14863199e-02],\n",
       "        [-1.12837720e+00, -9.16350484e-01,  1.57993793e-01,\n",
       "          2.18865442e+00, -3.70458543e-01,  2.16890192e+00,\n",
       "         -2.89041456e-02,  1.13560283e+00],\n",
       "        [ 2.76692417e-02, -3.83172721e-01, -2.09259701e+00,\n",
       "          9.16136146e-01,  1.14026284e+00, -1.42080009e+00,\n",
       "         -1.61542225e+00,  2.36761913e-01],\n",
       "        [ 3.39361906e-01, -4.72123086e-01,  5.38559139e-01,\n",
       "          1.22808507e-02, -7.47662365e-01, -8.44738364e-01,\n",
       "         -5.00062704e-01,  1.73793077e+00],\n",
       "        [-3.76919508e-02,  3.81742537e-01, -2.04695296e+00,\n",
       "          6.88601971e-01,  1.59594819e-01,  8.68280172e-01,\n",
       "          1.11873019e+00, -3.18311863e-02],\n",
       "        [ 6.36878848e-01, -8.35973918e-02, -1.05944467e+00,\n",
       "         -1.12939370e+00,  6.13221288e-01, -5.35871804e-01,\n",
       "         -1.14775693e+00, -1.41066000e-01],\n",
       "        [ 2.72943676e-01, -1.22152841e+00,  6.91133797e-01,\n",
       "         -1.07880807e+00,  9.09111381e-01,  1.39157808e+00,\n",
       "         -7.35722899e-01,  3.43034603e-02],\n",
       "        [ 2.19564825e-01,  5.16293108e-01, -7.71423399e-01,\n",
       "          9.38894570e-01, -3.74088287e-01,  2.62958318e-01,\n",
       "         -4.96583395e-02, -1.53678048e+00]],\n",
       "\n",
       "       [[-7.25392476e-02,  2.57889694e-03, -3.86640340e-01,\n",
       "          3.09244484e-01,  2.20310792e-01,  4.50684905e-01,\n",
       "         -1.61939406e+00, -1.14007592e+00],\n",
       "        [ 6.25979960e-01, -1.42036450e+00,  9.20108318e-01,\n",
       "          1.86677957e+00, -7.19125867e-01, -3.29714775e-01,\n",
       "         -1.35511184e+00, -5.10994196e-01],\n",
       "        [-8.02022159e-01, -8.29808056e-01,  1.74403995e-01,\n",
       "          1.18310452e+00,  8.52116168e-01, -8.23654950e-01,\n",
       "         -3.09735835e-01,  5.70853353e-01],\n",
       "        [ 2.01788521e+00, -1.37068880e+00,  4.87684339e-01,\n",
       "          8.13072026e-01, -1.54810405e+00,  4.07413274e-01,\n",
       "         -1.83652550e-01, -1.54578507e+00],\n",
       "        [ 1.29120260e-01, -4.13819492e-01,  1.04092598e+00,\n",
       "          6.47059232e-02,  8.17417204e-01,  1.03388393e+00,\n",
       "         -4.66976523e-01,  1.69304979e+00],\n",
       "        [ 7.15135515e-01,  9.91900384e-01, -4.70216215e-01,\n",
       "          1.50455058e+00,  2.31907979e-01, -6.70119822e-01,\n",
       "         -1.78002059e+00,  1.22320044e+00],\n",
       "        [-1.40352190e-01, -4.38385606e-01,  1.17577708e+00,\n",
       "          2.80460739e+00, -1.09543908e+00, -1.37428188e+00,\n",
       "         -5.31881094e-01,  4.03873250e-02],\n",
       "        [ 1.13944781e+00, -1.15900517e+00,  9.02388334e-01,\n",
       "         -1.30215907e+00, -1.93347526e+00,  1.29827845e+00,\n",
       "          9.32409346e-01,  5.62531412e-01],\n",
       "        [ 8.51085961e-01, -2.38480270e-01, -9.21431333e-02,\n",
       "         -4.45227414e-01,  4.88352478e-02,  7.08702743e-01,\n",
       "         -5.29389083e-01, -1.51928782e+00],\n",
       "        [-2.66411602e-01,  1.18264377e+00,  1.55165136e+00,\n",
       "          2.78216656e-02,  6.89983964e-01,  3.18697065e-01,\n",
       "         -1.42416787e+00,  1.09354949e+00],\n",
       "        [ 4.76567835e-01,  8.25069487e-01, -1.02852859e-01,\n",
       "          7.89693296e-01, -4.26194519e-01, -2.10951495e+00,\n",
       "         -3.24824959e-01, -1.62732348e-01],\n",
       "        [ 5.44592559e-01, -1.61294496e+00,  4.23036456e-01,\n",
       "         -1.57861501e-01,  2.09007084e-01,  3.67742598e-01,\n",
       "          8.99825573e-01,  1.36729050e+00],\n",
       "        [ 2.50547618e-01, -3.90204549e-01,  1.04567575e+00,\n",
       "         -1.01229870e+00, -1.55093417e-01,  4.77462530e-01,\n",
       "         -6.12803921e-02,  1.10121882e+00],\n",
       "        [-3.21382374e-01, -6.32956803e-01, -2.16299915e+00,\n",
       "         -7.85611272e-01,  9.56124485e-01,  4.16498303e-01,\n",
       "          4.78891842e-02,  2.16316509e+00],\n",
       "        [ 9.67429519e-01, -1.91338643e-01,  1.52519673e-01,\n",
       "          1.31998265e+00,  1.63101649e+00,  7.34117031e-01,\n",
       "          3.90931427e-01,  8.31792712e-01],\n",
       "        [ 1.07996666e+00, -1.15785547e-01, -1.72324431e+00,\n",
       "          1.16899252e+00, -6.42116010e-01,  1.53001368e+00,\n",
       "         -1.55926337e-02, -8.20230663e-01],\n",
       "        [-5.44393480e-01, -1.13759739e-02,  2.61816114e-01,\n",
       "         -6.73568070e-01,  1.34118772e+00,  4.11190718e-01,\n",
       "          1.62552667e+00, -5.65079391e-01],\n",
       "        [ 5.19643605e-01,  1.02323318e+00,  9.92094427e-02,\n",
       "         -1.61673248e+00,  1.59419760e-01, -4.20977265e-01,\n",
       "         -5.70598006e-01, -1.20526254e+00],\n",
       "        [-4.21700150e-01,  3.77234817e-01, -1.58171833e+00,\n",
       "          9.03135538e-01, -2.66797066e-01,  2.35532388e-01,\n",
       "          7.62665346e-02, -1.15773582e+00],\n",
       "        [ 7.35852838e-01,  1.30261087e+00,  1.74356148e-01,\n",
       "          1.23373672e-01,  1.68093574e+00, -8.13179493e-01,\n",
       "          1.93108642e+00,  1.22709250e+00],\n",
       "        [ 2.93685168e-01, -1.11093676e+00, -6.67211711e-01,\n",
       "          4.24360752e-01,  1.39544404e+00,  1.84499919e-01,\n",
       "          7.48409390e-01, -9.36392367e-01],\n",
       "        [ 6.43615201e-02, -3.83608729e-01, -4.05496120e-01,\n",
       "          6.23466773e-03, -3.81677359e-01, -7.85209537e-01,\n",
       "          1.28226447e+00, -2.26022792e+00],\n",
       "        [-1.60011423e+00,  6.13855012e-02, -1.32921350e+00,\n",
       "         -1.16701996e+00, -4.08619195e-02,  2.85300761e-01,\n",
       "          6.33258224e-02, -2.91039377e-01],\n",
       "        [ 1.13748145e+00,  1.03880131e+00,  3.99492770e-01,\n",
       "          1.44230366e+00, -1.25181749e-01,  1.77528873e-01,\n",
       "         -1.38497233e+00,  4.33625802e-02],\n",
       "        [-1.24328479e-01,  2.29069307e-01,  8.41461599e-01,\n",
       "          1.29986480e-01, -4.28763688e-01,  1.38452351e+00,\n",
       "          1.36220232e-01, -1.81633443e-01],\n",
       "        [-3.94535184e-01,  2.75602847e-01,  7.59952426e-01,\n",
       "          3.18083435e-01, -1.49524486e+00,  2.21226168e+00,\n",
       "         -1.40118563e+00, -1.82536232e+00],\n",
       "        [-9.52925161e-02,  7.82914579e-01, -3.75241607e-01,\n",
       "          7.50102103e-01,  2.48336703e-01,  9.22487617e-01,\n",
       "         -1.29933226e+00, -1.34836543e+00],\n",
       "        [-8.58184457e-01, -4.53530252e-01, -4.50446099e-01,\n",
       "         -2.31993747e+00, -5.25998235e-01, -1.00530648e+00,\n",
       "          9.07190323e-01,  1.78914726e-01],\n",
       "        [-4.33114946e-01, -1.63713884e+00, -1.05397081e+00,\n",
       "          1.80299401e+00,  2.03794446e-02, -1.62352455e+00,\n",
       "         -9.73723680e-02,  4.09722000e-01],\n",
       "        [ 2.71751821e-01,  6.60131574e-01, -3.92367184e-01,\n",
       "          5.60602188e-01, -1.37289691e+00,  3.35385621e-01,\n",
       "         -1.11340106e+00, -1.37825036e+00],\n",
       "        [ 3.34392905e-01, -1.05804491e+00, -1.05966961e+00,\n",
       "          4.33666140e-01,  5.39545894e-01, -4.33496982e-01,\n",
       "         -1.72485277e-01,  5.82574725e-01],\n",
       "        [-1.27799547e+00, -6.68672502e-01, -6.09042704e-01,\n",
       "          4.34371442e-01, -5.74370742e-01,  5.25421739e-01,\n",
       "          4.74817716e-02, -1.25813901e+00],\n",
       "        [-9.54845607e-01, -8.06016386e-01, -7.60649323e-01,\n",
       "          8.93546283e-01,  4.04187888e-01, -9.60198879e-01,\n",
       "          3.02144915e-01, -1.13535047e-01],\n",
       "        [ 1.28029108e+00, -2.21059418e+00,  2.23213032e-01,\n",
       "          2.24786147e-01, -2.52165914e-01,  3.80455583e-01,\n",
       "         -1.26333594e+00, -1.12855196e-01],\n",
       "        [-2.35758703e-02,  4.67759550e-01,  7.54811108e-01,\n",
       "          1.09986973e+00, -1.12813354e+00, -6.51771367e-01,\n",
       "          7.15746403e-01, -5.36170244e-01]]], dtype=float32)>"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#合并: 堆叠，会创建新维度\n",
    "#tf.stack(tensors, axis)可以堆叠方式合并多个张量，通过 tensors 列表表示，参数\n",
    "#axis 指定新维度插入的位置，axis 的用法与 tf.expand_dims 的一致，当axis ≥ 0时，在 axis\n",
    "#之前插入；当axis < 0时，在 axis 之后插入新维度\n",
    "a = tf.random.normal([35,8])\n",
    "b = tf.random.normal([35,8])\n",
    "tf.stack([a,b], axis=0)    #新增维度合并"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(35, 8, 2), dtype=float32, numpy=\n",
       "array([[[-2.28215843e-01, -8.50531831e-02],\n",
       "        [ 2.85958380e-01, -9.24016416e-01],\n",
       "        [ 4.74097490e-01, -1.08155131e+00],\n",
       "        [ 7.34968901e-01, -5.70807934e-01],\n",
       "        [-8.31117094e-01, -5.97224236e-01],\n",
       "        [ 1.26877451e+00, -2.60155853e-02],\n",
       "        [-6.77050531e-01,  2.11261916e+00],\n",
       "        [ 6.79601014e-01,  1.46670222e-01]],\n",
       "\n",
       "       [[-4.78844523e-01, -1.93997908e+00],\n",
       "        [ 4.29971009e-01, -1.48175263e+00],\n",
       "        [-5.19493401e-01, -9.08911049e-01],\n",
       "        [-1.24454916e+00, -1.42362952e+00],\n",
       "        [-1.03590012e+00, -3.75488073e-01],\n",
       "        [-1.78330496e-01, -1.74890235e-01],\n",
       "        [ 1.84102729e-01, -2.48017818e-01],\n",
       "        [ 1.58513248e-01,  5.24061620e-01]],\n",
       "\n",
       "       [[-2.92922735e+00,  2.18736559e-01],\n",
       "        [ 5.72741628e-01,  2.94762760e-01],\n",
       "        [-8.21159303e-01, -3.87237251e-01],\n",
       "        [-2.59660780e-01, -1.82438219e+00],\n",
       "        [ 1.24523163e+00,  4.54993844e-01],\n",
       "        [ 3.43616188e-01, -8.98762718e-02],\n",
       "        [-1.38899875e+00,  1.03226364e-01],\n",
       "        [ 1.94755405e-01,  2.59363413e-01]],\n",
       "\n",
       "       [[-6.74149692e-02, -2.13383198e+00],\n",
       "        [ 1.39015841e+00, -4.72589880e-01],\n",
       "        [-1.32153952e+00,  1.33936095e+00],\n",
       "        [-9.90244448e-01,  1.56107676e+00],\n",
       "        [ 4.28317219e-01, -2.50496194e-02],\n",
       "        [-2.15273589e-01, -4.10718054e-01],\n",
       "        [ 1.01098406e+00, -7.90622905e-02],\n",
       "        [-1.80929375e+00,  2.60051489e-01]],\n",
       "\n",
       "       [[-2.20447493e+00,  1.69216588e-01],\n",
       "        [-2.18625426e-01, -4.38904703e-01],\n",
       "        [-1.20077121e+00, -4.31366116e-01],\n",
       "        [ 1.18027568e+00,  8.40791613e-02],\n",
       "        [ 5.57368636e-01,  3.13060373e-01],\n",
       "        [-3.13245170e-02,  2.35626221e-01],\n",
       "        [-7.89116174e-02,  8.58122230e-01],\n",
       "        [ 3.34247291e-01, -1.02041692e-01]],\n",
       "\n",
       "       [[ 2.32748556e+00,  1.06832290e+00],\n",
       "        [ 2.58229613e-01,  1.43735781e-01],\n",
       "        [-5.76983929e-01,  1.46791303e+00],\n",
       "        [ 1.21475220e+00, -5.17485380e-01],\n",
       "        [ 7.89734200e-02, -7.13846326e-01],\n",
       "        [ 3.68384033e-01,  9.41549540e-01],\n",
       "        [ 1.39373887e+00,  4.70458120e-01],\n",
       "        [ 2.57536936e+00,  1.53528082e+00]],\n",
       "\n",
       "       [[ 1.75442469e+00, -4.93481874e-01],\n",
       "        [ 1.92869234e+00,  7.19073772e-01],\n",
       "        [-2.11379111e-01, -1.43904853e+00],\n",
       "        [ 7.16845930e-01,  1.52236566e-01],\n",
       "        [ 1.53776157e+00, -6.54635966e-01],\n",
       "        [-9.35326040e-01,  1.34584081e+00],\n",
       "        [ 1.81400895e+00,  9.01578963e-01],\n",
       "        [ 1.06124425e+00,  2.06304646e+00]],\n",
       "\n",
       "       [[ 5.62302411e-01,  5.23827314e-01],\n",
       "        [ 3.73636693e-01,  3.19682002e-01],\n",
       "        [ 4.91862029e-01,  1.44317937e+00],\n",
       "        [-3.90022956e-02, -5.06065845e-01],\n",
       "        [ 8.27345923e-02, -5.59528768e-01],\n",
       "        [-4.40891951e-01,  1.08089066e+00],\n",
       "        [ 1.17765498e+00, -1.92631078e+00],\n",
       "        [ 3.53001773e-01, -5.52732170e-01]],\n",
       "\n",
       "       [[ 7.66041875e-01,  2.48238578e-01],\n",
       "        [-2.22835231e+00,  5.03635034e-03],\n",
       "        [-6.86063647e-01, -2.14182425e+00],\n",
       "        [ 8.96045744e-01,  8.07778716e-01],\n",
       "        [-5.48789561e-01, -2.62616992e-01],\n",
       "        [ 1.14971972e+00, -2.56969780e-01],\n",
       "        [ 1.24208581e+00,  4.77410048e-01],\n",
       "        [-2.25912428e+00,  6.95065498e-01]],\n",
       "\n",
       "       [[ 3.37604731e-01, -2.42933869e+00],\n",
       "        [-4.34878737e-01, -8.83935213e-01],\n",
       "        [-1.44900158e-01, -5.21460474e-01],\n",
       "        [-1.57130349e+00,  1.31576633e+00],\n",
       "        [ 1.45228493e+00,  4.58952308e-01],\n",
       "        [ 1.02976203e-01,  1.63503814e+00],\n",
       "        [ 2.49966025e+00,  1.57298923e-01],\n",
       "        [ 5.97773731e-01, -1.15660846e+00]],\n",
       "\n",
       "       [[-5.46998978e-01,  2.56007409e+00],\n",
       "        [-1.05093729e+00,  1.24179469e-02],\n",
       "        [-5.71917892e-01, -2.03626350e-01],\n",
       "        [-1.75549436e+00, -6.16962910e-01],\n",
       "        [ 3.74741644e-01,  2.79139820e-02],\n",
       "        [ 1.35490036e+00, -4.38113045e-03],\n",
       "        [-3.34025361e-03,  6.10310078e-01],\n",
       "        [ 3.59689355e-01,  8.16798985e-01]],\n",
       "\n",
       "       [[ 9.31694031e-01,  1.65017486e+00],\n",
       "        [ 1.44790685e+00,  8.62153113e-01],\n",
       "        [-6.61672771e-01, -8.77083719e-01],\n",
       "        [-1.96224761e+00, -4.07161266e-01],\n",
       "        [-2.31759816e-01,  3.63114268e-01],\n",
       "        [-1.18353534e+00,  5.54277778e-01],\n",
       "        [-1.56159312e-01,  6.93572819e-01],\n",
       "        [-1.25376809e+00, -9.81990695e-01]],\n",
       "\n",
       "       [[ 1.57917929e+00,  1.07737029e+00],\n",
       "        [ 1.53233588e+00, -1.58236802e+00],\n",
       "        [ 8.65431547e-01, -1.34775996e+00],\n",
       "        [ 1.13882411e+00,  1.46529424e+00],\n",
       "        [ 9.81755555e-01, -1.51543617e+00],\n",
       "        [ 8.48340273e-01, -9.45641279e-01],\n",
       "        [ 9.33581233e-01, -9.97541845e-01],\n",
       "        [ 1.94847748e-01,  4.26277220e-01]],\n",
       "\n",
       "       [[-3.93802077e-01,  1.83593798e+00],\n",
       "        [ 6.23369336e-01,  1.26578116e+00],\n",
       "        [ 1.52576423e+00,  1.45291996e+00],\n",
       "        [ 4.41247135e-01, -8.89872909e-01],\n",
       "        [ 1.28784357e-02,  6.61592007e-01],\n",
       "        [-1.25387979e+00,  1.23851466e+00],\n",
       "        [-2.02392638e-01,  5.99711120e-01],\n",
       "        [-2.06821823e+00,  1.09212685e+00]],\n",
       "\n",
       "       [[-4.30509932e-02, -8.00591648e-01],\n",
       "        [ 3.57181609e-01,  1.23282266e+00],\n",
       "        [ 1.47862732e+00,  1.43791568e+00],\n",
       "        [-9.54024732e-01, -2.55913973e-01],\n",
       "        [-8.76883268e-01, -1.34745717e-01],\n",
       "        [-4.48990971e-01,  1.07048595e+00],\n",
       "        [-2.32535616e-01, -1.05246460e+00],\n",
       "        [-9.62000549e-01, -4.88188982e-01]],\n",
       "\n",
       "       [[ 5.73933423e-01, -7.16499567e-01],\n",
       "        [-9.97539520e-01, -8.57017934e-02],\n",
       "        [-1.58818746e+00,  2.14303708e+00],\n",
       "        [-4.22158360e-01, -1.77434301e+00],\n",
       "        [ 1.17248893e+00, -9.39230919e-01],\n",
       "        [-1.28007579e+00,  7.79811740e-01],\n",
       "        [ 1.27252138e+00, -1.18726206e+00],\n",
       "        [-1.21147895e+00,  7.58719623e-01]],\n",
       "\n",
       "       [[ 9.37289357e-01, -6.11479223e-01],\n",
       "        [-1.23684931e+00, -1.10816109e+00],\n",
       "        [-3.07857126e-01, -1.69877422e+00],\n",
       "        [ 2.38276348e-01, -1.36254156e+00],\n",
       "        [-5.19641101e-01,  5.04796386e-01],\n",
       "        [-7.44522095e-01,  1.11640346e+00],\n",
       "        [ 5.52773595e-01, -2.52377599e-01],\n",
       "        [ 2.48971248e+00, -6.79008186e-01]],\n",
       "\n",
       "       [[ 2.09936514e-01, -1.25139081e+00],\n",
       "        [-1.35614622e+00,  1.07584918e+00],\n",
       "        [-1.12354577e-01, -1.43948466e-01],\n",
       "        [-1.96367168e+00, -6.42048359e-01],\n",
       "        [ 2.05540705e+00,  2.36870718e+00],\n",
       "        [-1.28759325e+00,  9.66404319e-01],\n",
       "        [-8.17196071e-01,  3.17927861e+00],\n",
       "        [ 7.01709330e-01, -6.50221348e-01]],\n",
       "\n",
       "       [[-1.95101905e+00, -6.46593332e-01],\n",
       "        [-2.17277139e-01,  3.12180340e-01],\n",
       "        [ 6.25102103e-01,  8.75776768e-01],\n",
       "        [-1.16100049e+00, -1.83769155e+00],\n",
       "        [ 2.13690415e-01, -5.05019784e-01],\n",
       "        [ 1.79843724e+00, -9.08951163e-02],\n",
       "        [-1.40988219e+00,  1.69498003e+00],\n",
       "        [-4.34426144e-02, -5.06517649e-01]],\n",
       "\n",
       "       [[-2.38206342e-01, -5.81727922e-01],\n",
       "        [-2.01216891e-01,  7.10928440e-01],\n",
       "        [ 2.28282571e+00, -3.36301208e-01],\n",
       "        [ 1.59675515e+00,  4.96289909e-01],\n",
       "        [ 9.21195209e-01, -5.08257411e-02],\n",
       "        [-1.46075442e-01, -1.15012920e+00],\n",
       "        [ 5.45190275e-01, -2.05902725e-01],\n",
       "        [ 2.21312070e+00, -4.12594497e-01]],\n",
       "\n",
       "       [[ 4.95108128e-01, -8.97918344e-01],\n",
       "        [-3.57810795e-01,  1.59948015e+00],\n",
       "        [-7.70094991e-02,  4.87872571e-01],\n",
       "        [ 8.50138903e-01,  1.59880710e+00],\n",
       "        [-1.14704907e+00,  1.25402659e-01],\n",
       "        [ 1.42460084e+00, -2.62785554e-01],\n",
       "        [-8.30597103e-01, -9.56418395e-01],\n",
       "        [-6.30388200e-01, -2.30959505e-02]],\n",
       "\n",
       "       [[ 2.77645849e-02,  1.61706150e-01],\n",
       "        [-5.14829904e-02, -1.15366769e+00],\n",
       "        [-3.68853509e-01,  1.46890712e+00],\n",
       "        [-1.73266542e+00,  7.47470796e-01],\n",
       "        [-4.59377438e-01,  1.64569672e-02],\n",
       "        [ 1.78937748e-01, -9.59198177e-01],\n",
       "        [-1.54161170e-01,  3.22566539e-01],\n",
       "        [ 4.49750066e-01, -9.69964623e-01]],\n",
       "\n",
       "       [[-1.01248872e+00,  2.95468956e-01],\n",
       "        [ 1.02118707e+00,  7.55223334e-01],\n",
       "        [ 1.09782124e+00,  2.76203966e+00],\n",
       "        [ 1.23421419e+00,  3.78847390e-01],\n",
       "        [ 1.14894438e+00,  6.19910717e-01],\n",
       "        [ 1.75574750e-01,  1.46787059e+00],\n",
       "        [-1.31248140e+00, -1.97964177e-01],\n",
       "        [ 1.17322445e+00, -5.58885694e-01]],\n",
       "\n",
       "       [[-2.06600904e+00, -1.24922663e-01],\n",
       "        [ 5.79442263e-01,  1.83365560e+00],\n",
       "        [ 1.08881533e-01, -3.71226758e-01],\n",
       "        [ 1.27053440e-01,  3.76148969e-01],\n",
       "        [-1.95189878e-01, -5.81319511e-01],\n",
       "        [ 1.48581660e+00, -7.41554976e-01],\n",
       "        [ 2.03653708e-01,  1.75904214e-01],\n",
       "        [-6.29849970e-01, -1.80041879e-01]],\n",
       "\n",
       "       [[ 7.35113859e-01,  4.44290221e-01],\n",
       "        [-1.03665829e+00,  1.01301801e+00],\n",
       "        [-4.47105080e-01, -1.24939635e-01],\n",
       "        [-2.11195898e+00,  6.89710021e-01],\n",
       "        [-5.00066280e-01,  3.24308932e-01],\n",
       "        [ 1.38959062e+00, -7.32904911e-01],\n",
       "        [-3.05003554e-01,  6.81648374e-01],\n",
       "        [-3.50359619e-01,  8.13714504e-01]],\n",
       "\n",
       "       [[-4.08719391e-01, -1.76532745e+00],\n",
       "        [-1.91456646e-01, -1.20105040e+00],\n",
       "        [-2.33147430e+00,  4.45683658e-01],\n",
       "        [-1.62301004e-01, -6.59212619e-02],\n",
       "        [-5.78453302e-01, -1.40059042e+00],\n",
       "        [ 1.98125350e+00, -1.40723419e+00],\n",
       "        [ 2.45716229e-01, -1.61111772e+00],\n",
       "        [-8.60875249e-01,  5.21741807e-01]],\n",
       "\n",
       "       [[ 5.54037273e-01,  5.28205991e-01],\n",
       "        [ 1.23213685e+00, -1.04068780e+00],\n",
       "        [-4.94153321e-01, -1.47657976e-01],\n",
       "        [ 3.52208734e-01,  5.48955142e-01],\n",
       "        [ 1.78599119e-01,  2.39571054e-02],\n",
       "        [ 7.84400642e-01,  9.43024993e-01],\n",
       "        [ 2.79569656e-01, -3.02291065e-01],\n",
       "        [-1.81926161e-01,  2.51155949e+00]],\n",
       "\n",
       "       [[-9.17547166e-01,  1.09032661e-01],\n",
       "        [-8.87105048e-01, -9.88282025e-01],\n",
       "        [-9.03383791e-01, -7.46321678e-01],\n",
       "        [-3.26184742e-02, -2.27765656e+00],\n",
       "        [ 6.29641712e-01,  7.35257208e-01],\n",
       "        [ 1.19373393e+00,  2.74306118e-01],\n",
       "        [-1.78756368e+00, -4.50761795e-01],\n",
       "        [ 1.02070346e-01,  3.48665744e-01]],\n",
       "\n",
       "       [[ 4.90042806e-01,  7.86456287e-01],\n",
       "        [-4.48219836e-01, -8.77660155e-01],\n",
       "        [ 2.38362956e+00, -2.05341482e+00],\n",
       "        [ 2.38116845e-01, -1.51940978e+00],\n",
       "        [ 1.74917862e-01,  1.21336412e+00],\n",
       "        [ 2.17814231e+00, -4.11247015e-02],\n",
       "        [ 7.08689272e-01,  9.49478388e-01],\n",
       "        [-5.33232652e-02, -8.02969277e-01]],\n",
       "\n",
       "       [[-6.91898644e-01,  1.54546726e+00],\n",
       "        [-3.75799805e-01, -6.04313612e-01],\n",
       "        [-1.37211752e+00, -9.15503561e-01],\n",
       "        [-7.10050344e-01, -6.15842640e-01],\n",
       "        [-4.98428494e-02, -1.14476793e-01],\n",
       "        [ 2.74865413e+00,  1.46765733e+00],\n",
       "        [-8.78720880e-01,  8.97511423e-01],\n",
       "        [-6.92609847e-02,  7.12941885e-01]],\n",
       "\n",
       "       [[ 4.10672456e-01,  1.33351099e+00],\n",
       "        [ 3.41901392e-01, -7.69069850e-01],\n",
       "        [ 9.11666930e-01, -1.39450538e+00],\n",
       "        [ 2.03331828e+00,  5.97371578e-01],\n",
       "        [ 6.04188442e-01, -1.27604878e+00],\n",
       "        [-2.30711031e+00, -1.23364425e+00],\n",
       "        [-4.25901443e-01, -1.44531929e+00],\n",
       "        [ 5.07111549e-01, -1.86660922e+00]],\n",
       "\n",
       "       [[-6.38887346e-01,  4.22023177e-01],\n",
       "        [-4.81814034e-02,  7.14038730e-01],\n",
       "        [ 1.43914974e+00, -6.62513971e-01],\n",
       "        [ 5.47985792e-01, -3.30895543e-01],\n",
       "        [-1.00285101e+00, -3.95666718e-01],\n",
       "        [ 4.60225910e-01,  7.67550528e-01],\n",
       "        [ 7.36814320e-01, -1.92316309e-01],\n",
       "        [-2.06601635e-01,  6.73656762e-01]],\n",
       "\n",
       "       [[ 1.59971035e+00, -1.08285379e+00],\n",
       "        [ 9.78833914e-01, -1.74316466e+00],\n",
       "        [ 6.03248358e-01,  5.74963868e-01],\n",
       "        [ 1.66235602e+00,  2.68080521e+00],\n",
       "        [-1.74488604e-01, -5.94219506e-01],\n",
       "        [ 6.60643816e-01,  1.41186863e-01],\n",
       "        [-9.31555554e-02,  4.06675726e-01],\n",
       "        [ 7.30343938e-01,  5.05081296e-01]],\n",
       "\n",
       "       [[ 5.05882323e-01, -5.68226993e-01],\n",
       "        [-7.64015019e-02, -9.36825275e-02],\n",
       "        [ 2.61629105e+00, -1.79966819e+00],\n",
       "        [-2.41161492e-02, -6.15879655e-01],\n",
       "        [ 1.16379297e+00, -1.81483895e-01],\n",
       "        [ 4.52613652e-01,  2.00880432e+00],\n",
       "        [-1.74446508e-01,  1.75014067e+00],\n",
       "        [ 1.32877338e+00, -1.24233675e+00]],\n",
       "\n",
       "       [[ 1.15847516e+00,  6.94447756e-01],\n",
       "        [-8.12114954e-01, -3.01009836e-03],\n",
       "        [ 7.56744202e-03,  9.05694067e-01],\n",
       "        [ 5.27794361e-01, -1.40102875e+00],\n",
       "        [-6.67415261e-01, -2.54228503e-01],\n",
       "        [ 7.35874236e-01, -2.45035231e-01],\n",
       "        [-1.87019265e+00,  3.57005298e-01],\n",
       "        [-9.00430083e-01,  4.45032686e-01]]], dtype=float32)>"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = tf.random.normal([35,8])\n",
    "b = tf.random.normal([35,8])\n",
    "tf.stack([a,b], axis=-1)  #末位新增维度合并"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "#分割\n",
    " #tf.split(x, num_or_size_splits, axis)可以完成张量的分割操作，参数意义如下：\n",
    "#❑  x 参数：待分割张量。\n",
    "#❑  num_or_size_splits 参数：切割方案。当 num_or_size_splits 为单个数值时，如 10，表\n",
    "#示等长切割为 10 份；当 num_or_size_splits 为 List 时，List 的每个元素表示每份的长\n",
    "#度，如[2,4,2,2]表示切割为 4 份，每份的长度依次是 2、4、2\n",
    "#❑  axis 参数：指定分割的维度索引号。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(1, 35, 8), dtype=float32, numpy=\n",
       "array([[[-2.81610131e-01, -1.16580710e-01, -4.89681572e-01,\n",
       "         -1.52452779e+00, -2.68081093e+00,  5.61572909e-01,\n",
       "          6.00078464e-01, -4.20771867e-01],\n",
       "        [-6.82771444e-01,  7.40851402e-01, -4.86286990e-02,\n",
       "          2.87710845e-01,  6.89275622e-01, -1.73190987e+00,\n",
       "         -5.37817121e-01, -1.40862632e+00],\n",
       "        [-6.11294508e-01,  5.61699986e-01, -1.86132789e-01,\n",
       "         -2.10158974e-01,  9.69492257e-01,  2.26407140e-01,\n",
       "         -1.60920572e+00, -1.66507864e+00],\n",
       "        [ 7.51359686e-02, -5.64112902e-01, -4.43099380e-01,\n",
       "          6.80535913e-01,  4.90614831e-01, -5.55352509e-01,\n",
       "         -1.74719691e+00, -1.00543225e+00],\n",
       "        [-1.00273323e+00,  2.23102546e+00, -1.43941832e+00,\n",
       "         -1.41818321e+00, -1.04495831e-01,  3.20320934e-01,\n",
       "          1.65336072e+00, -1.76299691e-01],\n",
       "        [ 1.00461632e-01, -3.63939762e-01,  4.01590228e-01,\n",
       "          1.76513284e-01,  2.32115000e-01, -1.47922492e+00,\n",
       "         -1.86518407e+00, -2.64790922e-01],\n",
       "        [-3.10444504e-01,  5.73633313e-01, -5.30948713e-02,\n",
       "          1.24876785e+00,  1.64927518e+00, -2.55759120e-01,\n",
       "         -1.08103037e+00,  5.77666342e-01],\n",
       "        [ 1.42133892e-01, -4.15505588e-01,  2.95533895e-01,\n",
       "          1.68552530e+00, -1.80612528e+00,  4.52235550e-01,\n",
       "         -4.44027901e-01,  1.04757786e+00],\n",
       "        [-1.28845549e+00,  1.12474167e+00,  8.92637148e-02,\n",
       "         -5.93371034e-01, -1.02241743e+00, -2.60637105e-01,\n",
       "          4.59923685e-01,  1.23112142e+00],\n",
       "        [-8.69253039e-01, -1.06661655e-01, -5.90135872e-01,\n",
       "          1.35408831e+00,  8.76874804e-01, -6.56016886e-01,\n",
       "         -1.04872429e+00,  4.51686144e-01],\n",
       "        [-3.56144756e-01, -1.46641517e+00,  4.72709477e-01,\n",
       "          1.27452266e+00, -8.42887815e-03, -1.41440555e-02,\n",
       "         -5.48650622e-01,  1.91049993e-01],\n",
       "        [ 9.60593998e-01,  6.51958227e-01,  7.19481409e-01,\n",
       "          1.64350078e-01,  6.39349282e-01,  4.06193167e-01,\n",
       "         -5.21683812e-01,  4.52424973e-01],\n",
       "        [-3.21960568e+00, -1.05726457e+00, -1.94894302e+00,\n",
       "         -4.74093735e-01,  3.28084081e-01, -2.33075574e-01,\n",
       "          1.07418168e+00,  1.09349179e+00],\n",
       "        [ 2.29874868e-02,  1.03279126e+00,  6.77542329e-01,\n",
       "         -9.38615263e-01, -1.30706596e+00,  1.99403369e+00,\n",
       "          3.10948975e-02, -1.81656516e+00],\n",
       "        [-2.57250527e-03,  5.75484261e-02, -1.14535165e+00,\n",
       "          1.28881729e+00,  3.56347889e-01, -1.14584625e+00,\n",
       "          1.28762871e-01, -6.49679542e-01],\n",
       "        [ 7.76494622e-01, -2.64778614e-01, -5.79511464e-01,\n",
       "         -9.61693823e-01, -6.77872717e-01,  7.87973762e-01,\n",
       "          2.90464997e-01, -6.19998336e-01],\n",
       "        [-8.56846794e-02,  1.10320795e+00, -1.21591771e+00,\n",
       "         -1.77340877e+00, -2.19284749e+00,  1.60490918e+00,\n",
       "         -2.60548949e-01, -6.83647037e-01],\n",
       "        [ 1.04762650e+00,  1.12013793e+00,  1.88053071e+00,\n",
       "         -6.94974124e-01, -2.35162377e-01,  4.30480540e-01,\n",
       "         -6.88011125e-02,  6.75908327e-01],\n",
       "        [ 9.22978997e-01, -1.74649283e-01, -1.68568087e+00,\n",
       "         -5.16618371e-01, -1.68200612e+00, -2.59523213e-01,\n",
       "         -1.44566774e+00, -3.80441129e-01],\n",
       "        [-9.55988765e-02, -2.06834197e-01,  3.55853558e-01,\n",
       "          3.82672213e-02,  6.08430445e-01, -4.60242152e-01,\n",
       "          2.35252810e+00, -1.66956747e+00],\n",
       "        [-1.75523996e-01, -4.81819928e-01,  4.10207540e-01,\n",
       "          4.39389765e-01, -1.20388627e+00,  1.43812740e+00,\n",
       "          4.60769296e-01, -6.78710699e-01],\n",
       "        [ 9.84409809e-01, -1.69636786e+00, -2.11907768e+00,\n",
       "          6.66604817e-01, -8.07510376e-01, -6.92434311e-01,\n",
       "         -7.45308459e-01,  5.05341925e-02],\n",
       "        [ 1.38948619e+00, -1.31487441e+00,  8.32158625e-01,\n",
       "         -1.51818013e+00, -1.28379643e+00,  1.06815755e+00,\n",
       "         -9.13571239e-01,  1.72162449e+00],\n",
       "        [ 2.63697553e+00, -6.03676200e-01,  1.44655001e+00,\n",
       "         -1.07669568e+00, -4.64698911e-01, -1.54962742e+00,\n",
       "          3.47867608e-01,  9.59338009e-01],\n",
       "        [ 1.20097816e+00,  2.96992958e-01, -8.75369906e-01,\n",
       "          8.80391240e-01, -3.72858524e-01, -4.35095161e-01,\n",
       "          1.27170897e+00, -8.59045446e-01],\n",
       "        [ 1.04243898e+00, -7.86290467e-01,  5.37054539e-01,\n",
       "         -6.56889200e-01, -6.34239495e-01, -9.12741899e-01,\n",
       "          1.98623276e+00,  3.54665406e-02],\n",
       "        [-1.93573639e-01, -6.18354604e-03, -1.16298306e+00,\n",
       "         -6.16617560e-01, -3.13776761e-01, -1.08260262e+00,\n",
       "         -1.90712526e-01, -6.85871959e-01],\n",
       "        [ 4.03838068e-01,  5.62479556e-01, -1.22287798e+00,\n",
       "          3.02564472e-01,  1.16186298e-01, -1.45022944e-01,\n",
       "          1.62339136e-01,  8.17628562e-01],\n",
       "        [ 4.31711614e-01,  1.86725989e-01, -1.24191678e+00,\n",
       "          1.56151652e-02, -7.83682704e-01,  7.64031947e-01,\n",
       "          9.21295822e-01,  8.99015516e-02],\n",
       "        [-8.04914057e-01, -1.79646766e+00,  6.93408966e-01,\n",
       "         -7.78554559e-01, -5.16698658e-01, -1.84701276e+00,\n",
       "         -6.22909702e-02, -2.19631243e+00],\n",
       "        [ 3.82918209e-01,  1.08205891e+00, -2.13267878e-01,\n",
       "         -1.13015914e+00, -2.05324936e+00, -9.96529981e-02,\n",
       "         -8.66385698e-01,  4.31756884e-01],\n",
       "        [-4.79210168e-02,  1.84575939e+00, -2.18810201e+00,\n",
       "          1.29226089e-01,  3.35460573e-01, -1.35965541e-01,\n",
       "          2.09580094e-01,  5.15333116e-01],\n",
       "        [ 1.74816859e+00, -2.41372776e+00, -4.48233902e-01,\n",
       "         -1.71022975e+00,  4.16000783e-01,  1.00263968e-01,\n",
       "         -3.36920738e-01,  1.05288506e+00],\n",
       "        [-4.16768283e-01, -4.99722332e-01, -2.19579601e+00,\n",
       "          3.20313513e-01,  6.14929974e-01,  6.69732332e-01,\n",
       "         -1.17395747e+00, -1.58762598e+00],\n",
       "        [ 6.46899223e-01,  1.01594031e+00,  3.13960761e-01,\n",
       "          2.68301845e-01,  9.99952078e-01,  1.02861631e+00,\n",
       "          3.24851155e-01,  2.70860505e+00]]], dtype=float32)>"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = tf.random.normal([10,35,8])\n",
    "result = tf.split(x,10,axis=0)    #从第一个维度等分切取十份\n",
    "len(result)\n",
    "result[0]   #仍保留一个维度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(4, 35, 8), dtype=float32, numpy=\n",
       "array([[[ 0.88957447,  0.25903618,  0.15662345, ..., -0.9118242 ,\n",
       "         -0.6444801 , -0.7068378 ],\n",
       "        [-0.9814597 ,  0.8680506 ,  1.1393553 , ..., -0.09996463,\n",
       "         -1.4086158 , -1.0636173 ],\n",
       "        [-4.390505  ,  1.0261264 ,  0.75137633, ..., -0.5680645 ,\n",
       "          1.6046435 , -0.63068765],\n",
       "        ...,\n",
       "        [-1.8646584 , -0.05690026,  3.163063  , ..., -0.058649  ,\n",
       "         -0.31253475,  1.2760584 ],\n",
       "        [-0.29085994,  1.1697788 , -0.44177905, ..., -1.317758  ,\n",
       "         -0.56596786, -0.5925828 ],\n",
       "        [-0.1782376 ,  1.8906208 ,  2.3124962 , ..., -1.4921379 ,\n",
       "          1.6446273 , -0.9667356 ]],\n",
       "\n",
       "       [[-0.15762086, -1.2225566 , -0.23952028, ..., -1.2512298 ,\n",
       "          1.5531167 , -1.6875529 ],\n",
       "        [-2.2363176 ,  0.94903934, -0.37559652, ...,  0.2721065 ,\n",
       "         -0.9104993 , -0.52998096],\n",
       "        [-0.02597535,  2.6765687 , -0.27135777, ...,  1.2175547 ,\n",
       "          0.5019147 ,  0.7603635 ],\n",
       "        ...,\n",
       "        [-0.23568808, -1.3225887 ,  0.04155475, ..., -0.19926907,\n",
       "         -0.606145  ,  0.51902413],\n",
       "        [ 0.20653903,  0.38426888,  0.3276634 , ...,  0.354323  ,\n",
       "          1.1369241 ,  1.1256291 ],\n",
       "        [ 1.1889049 , -0.9998023 ,  1.3827417 , ...,  1.7959615 ,\n",
       "          0.42568818, -1.4405811 ]],\n",
       "\n",
       "       [[-0.05528497, -0.6664593 ,  0.6132789 , ...,  0.78417766,\n",
       "          1.2797229 , -1.7022139 ],\n",
       "        [ 0.40048778,  0.20724915,  0.8628819 , ...,  3.0833344 ,\n",
       "          0.40717843, -0.91418475],\n",
       "        [-0.6467031 ,  0.02165242,  1.1048349 , ...,  0.41328695,\n",
       "          0.29140952,  0.02860459],\n",
       "        ...,\n",
       "        [ 0.53497356, -0.06146688, -1.6598743 , ...,  0.6007464 ,\n",
       "          0.14968973,  0.09968866],\n",
       "        [-0.71143436,  0.21221095, -1.6302993 , ..., -0.07401848,\n",
       "          2.8099725 , -2.2079756 ],\n",
       "        [ 0.08963275, -0.62599933,  0.7860022 , ...,  1.6693145 ,\n",
       "         -0.0619284 , -0.6564461 ]],\n",
       "\n",
       "       [[-0.10155636,  0.10728848, -0.21345368, ..., -0.96901244,\n",
       "          1.5468369 ,  0.79871804],\n",
       "        [-0.84011054, -2.0804772 , -1.6387128 , ...,  1.5735202 ,\n",
       "         -0.09404919,  0.30397534],\n",
       "        [-1.2383436 ,  2.0903056 ,  0.105459  , ..., -0.66600704,\n",
       "          3.2377026 ,  0.9355153 ],\n",
       "        ...,\n",
       "        [ 0.26266894,  0.27118963, -0.63564664, ..., -0.15656348,\n",
       "         -1.0181729 ,  0.5956361 ],\n",
       "        [ 0.17889354, -0.77075523, -0.7935647 , ...,  1.1682746 ,\n",
       "         -0.7481307 , -1.264578  ],\n",
       "        [ 1.3630674 , -0.3263358 , -0.6487033 , ...,  0.21700183,\n",
       "         -0.99205506, -0.23794432]]], dtype=float32)>"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = tf.random.normal([10,35,8])\n",
    "result = tf.split(x, num_or_size_splits=[4,2,2,2], axis=0)   #切为四份，按比例分配\n",
    "len(result)\n",
    "result[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(35, 8), dtype=float32, numpy=\n",
       "array([[ 0.14775954,  1.1407794 , -1.9246082 , -0.14078052,  0.34812608,\n",
       "        -0.5381417 ,  0.18854061, -0.02937176],\n",
       "       [-1.6886729 ,  0.83815694, -1.5297056 , -0.28443083, -1.9552152 ,\n",
       "        -1.8152384 , -0.8583708 , -0.10362251],\n",
       "       [-0.14980675, -0.64379543,  0.6981115 , -0.78362525,  0.13005121,\n",
       "        -1.3936929 ,  0.44531354, -0.75745684],\n",
       "       [ 0.42605725,  0.4042438 ,  0.13406241, -0.9400068 ,  0.4016926 ,\n",
       "        -2.0961497 ,  1.3750378 , -0.3714507 ],\n",
       "       [ 1.6287886 ,  0.85526884,  1.6069216 ,  0.24792178, -0.57515675,\n",
       "         1.3712753 , -1.2311354 ,  0.82278526],\n",
       "       [-0.00980925,  0.0335175 ,  0.24368955, -0.86544627,  0.32928428,\n",
       "         0.8920562 ,  1.0245124 ,  0.12179717],\n",
       "       [-1.1409186 , -0.59391236, -0.660007  , -0.00439538,  0.16534151,\n",
       "         0.41080993,  0.01311044,  1.666023  ],\n",
       "       [-0.1590966 ,  0.41354972,  1.0535713 , -0.6874817 ,  0.18472189,\n",
       "        -0.29246703,  0.18809894, -2.0157404 ],\n",
       "       [-0.44819033, -0.50668335, -1.6149917 ,  0.899282  ,  2.2367818 ,\n",
       "        -1.6504573 ,  0.26362932,  0.41492385],\n",
       "       [ 1.1333497 , -1.3821468 ,  1.5515251 , -0.69162816,  0.25262523,\n",
       "         1.2815675 , -1.083255  , -0.4952412 ],\n",
       "       [-0.21853118, -0.9429043 , -1.1899146 , -0.08295728,  0.63249016,\n",
       "        -1.4417652 ,  1.2282134 , -2.1670098 ],\n",
       "       [-1.4275222 , -0.5834521 , -0.2908885 , -0.6552468 , -0.67613167,\n",
       "        -0.39893785, -0.12257636,  0.2165071 ],\n",
       "       [-1.0944905 ,  1.1880333 ,  0.54471916,  0.5380953 , -0.8759307 ,\n",
       "        -0.70759225, -2.807495  , -0.69345134],\n",
       "       [ 0.38361868, -0.8204278 ,  2.4517555 ,  1.4193178 ,  1.0870638 ,\n",
       "         0.00599191,  0.71321654,  1.4870718 ],\n",
       "       [-1.2340763 ,  1.0616597 ,  0.6578675 , -0.9027396 , -0.89160365,\n",
       "         0.1647472 ,  0.65446395, -0.66963255],\n",
       "       [-0.69918835, -0.4375002 , -0.23444039, -0.75750893, -0.42320785,\n",
       "        -0.23969951,  1.2598082 ,  0.18455422],\n",
       "       [ 0.6846506 , -0.21688835, -0.8276093 ,  1.031486  , -0.1484744 ,\n",
       "        -2.4448977 , -0.4825707 ,  0.60941494],\n",
       "       [ 0.60245466,  0.29461923,  1.2257125 , -2.1822305 , -0.36974087,\n",
       "        -0.09253459, -0.79164976,  0.52436167],\n",
       "       [ 2.6697388 , -0.43466187,  0.56254613, -0.58693355,  0.05065911,\n",
       "         0.802614  , -1.2301974 , -0.46494958],\n",
       "       [ 1.1812944 ,  1.3707058 , -0.06063443,  1.6968528 ,  0.22644381,\n",
       "        -1.766079  , -1.0182021 , -1.1541758 ],\n",
       "       [ 0.42158204, -0.5984996 ,  0.14943652, -1.3645191 ,  0.6307241 ,\n",
       "        -0.36708826,  1.3665462 , -1.3157052 ],\n",
       "       [-1.9678268 ,  1.2623088 , -1.1081829 , -0.9612539 , -0.7646005 ,\n",
       "         0.20622358,  1.2104758 ,  0.7550748 ],\n",
       "       [ 0.4084546 ,  0.5693712 , -1.287081  , -1.8582592 , -2.0927522 ,\n",
       "         0.97921526,  2.512113  ,  1.927889  ],\n",
       "       [-0.6836052 ,  2.0614235 ,  1.5697708 ,  0.5838268 , -0.7392563 ,\n",
       "         0.22879443,  0.3356393 , -0.5614203 ],\n",
       "       [ 0.24312614, -0.70864916, -1.4495355 ,  0.48162013,  0.37712964,\n",
       "         0.8621626 ,  0.02782815, -1.0650139 ],\n",
       "       [ 0.2666779 ,  1.1080099 , -0.94279903,  1.8482376 , -0.3860349 ,\n",
       "         1.6776148 , -1.1473749 , -0.652957  ],\n",
       "       [-1.2456025 , -1.1733103 ,  0.11304694, -0.0916686 ,  1.4442502 ,\n",
       "         1.8690686 ,  0.14303665,  1.1854652 ],\n",
       "       [-0.8778458 ,  0.5496905 ,  0.12682068,  0.12243623, -0.02387948,\n",
       "         2.1556387 , -0.37037325,  1.1521102 ],\n",
       "       [ 1.1721535 ,  0.7916263 ,  0.334744  ,  1.1130823 ,  0.98842925,\n",
       "         0.14699647,  0.8556316 , -1.3192538 ],\n",
       "       [ 0.1107621 ,  0.14191492, -1.4132544 ,  0.64070296,  0.18047863,\n",
       "         0.32879248,  0.12516686,  0.5897897 ],\n",
       "       [ 0.41487715,  0.6343181 , -1.5634516 , -0.5236311 , -0.5089172 ,\n",
       "         0.0646882 ,  0.85746586, -1.1373113 ],\n",
       "       [ 1.1852871 , -0.02607529,  0.649628  , -2.2684653 , -0.6457832 ,\n",
       "         1.2366985 ,  0.37443295, -1.6326051 ],\n",
       "       [ 2.5805063 ,  1.3085206 ,  2.069088  , -1.1481203 , -0.3096115 ,\n",
       "        -0.34153163, -1.2186689 ,  0.83435565],\n",
       "       [-0.09857508, -0.9509171 , -0.11627388, -0.1906362 ,  0.6717565 ,\n",
       "         1.0724185 ,  0.65881246,  0.544321  ],\n",
       "       [-1.2588725 ,  0.54658425,  0.6293279 , -1.0523658 , -0.04022267,\n",
       "         0.8942034 ,  0.3555126 , -0.9576861 ]], dtype=float32)>"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    " # tf.unstack(x,axis)函数, 指定维度索引进行分割和降维\n",
    "x = tf.random.normal([10,35,8])\n",
    "result = tf.unstack(x, axis=0)\n",
    "len(result)\n",
    "result[0]   #维度长度改变"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据统计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tf.Tensor(4.0, shape=(), dtype=float32)\n",
      "tf.Tensor(2.0, shape=(), dtype=float32)\n",
      "tf.Tensor(1.0, shape=(), dtype=float32)\n"
     ]
    }
   ],
   "source": [
    "#向量范数\n",
    "#L1范数\n",
    "x = tf.ones([2,2])\n",
    "print(tf.norm(x,ord=1))\n",
    "\n",
    "#L2范数\n",
    "print(tf.norm(x,ord=2))\n",
    "\n",
    "# ∞范数\n",
    "import numpy as np\n",
    "print(tf.norm(x,ord=np.inf))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tf.Tensor([1.8937659  0.46911559 2.1226451  1.4024177 ], shape=(4,), dtype=float32)\n",
      "tf.Tensor([-1.7887665  -1.944962   -1.37443    -0.50521505], shape=(4,), dtype=float32)\n",
      "tf.Tensor([ 0.13909246 -0.70038164  0.37292767  0.38535193], shape=(4,), dtype=float32)\n"
     ]
    }
   ],
   "source": [
    "#最值、均值、和\n",
    "# tf.reduce_max、tf.reduce_min、tf.reduce_mean、tf.reduce_sum \n",
    "# 函数可以求解张量在某个维度上的最大、最小、均值、和，也可以求全局最大、最小、均值、和信息。\n",
    "\n",
    "x = tf.random.normal([4,10])\n",
    "\n",
    "print(tf.reduce_max(x, axis=1)) #统计第二个维度的最大值\n",
    "\n",
    "print(tf.reduce_min(x, axis=1)) #统计第二个维度的最大值\n",
    "\n",
    "print(tf.reduce_mean(x, axis=1)) #统计第二个维度的最大值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(<tf.Tensor: shape=(), dtype=float32, numpy=1.8383636>,\n",
       " <tf.Tensor: shape=(), dtype=float32, numpy=-2.8046992>,\n",
       " <tf.Tensor: shape=(), dtype=float32, numpy=-0.05256331>)"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = tf.random.normal([4,10])\n",
    "\n",
    "# 统计全局的最大、最小、均值、和，返回的张量均为标量\n",
    "tf.reduce_max(x),tf.reduce_min(x), tf.reduce_mean(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(), dtype=float32, numpy=1.1126965>"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#求误差\n",
    "\n",
    "\n",
    "out = tf.random.normal([4,10])\n",
    "y = tf.constant([1,2,2,0])\n",
    "\n",
    "y = tf.one_hot(y, depth=10)\n",
    "loss = tf.keras.losses.mse(y,out)\n",
    "loss = tf.reduce_mean(loss)\n",
    "loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 10), dtype=float32, numpy=\n",
       "array([[0.06496037, 0.03044098, 0.16669856, 0.07353485, 0.03361996,\n",
       "        0.09011718, 0.19059007, 0.01837877, 0.01982781, 0.31183153],\n",
       "       [0.01990902, 0.22879173, 0.07047527, 0.15176426, 0.01427519,\n",
       "        0.04520494, 0.03409658, 0.32039037, 0.05031824, 0.06477436]],\n",
       "      dtype=float32)>"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#获取最值的索引位置\n",
    "out = tf.random.normal([2,10])\n",
    "out = tf.nn.softmax(out, axis=1)\n",
    "out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(<tf.Tensor: shape=(2,), dtype=int64, numpy=array([9, 7], dtype=int64)>,\n",
       " <tf.Tensor: shape=(2,), dtype=int64, numpy=array([7, 4], dtype=int64)>)"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#张量中最大、最小值对应索引\n",
    "tf.argmax(out,axis=1), tf.argmin(out,axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 张量比较"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(), dtype=float32, numpy=16.0>"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#真实值和预测值比较\n",
    "\n",
    "#构建预测值\n",
    "out = tf.random.normal([100,10])\n",
    "out = tf.nn.softmax(out, axis=1)\n",
    "pred = tf.argmax(out, axis=1)\n",
    "\n",
    "#构建真实值\n",
    "y = tf.random.uniform([100], dtype=tf.int64, maxval=10)\n",
    "\n",
    "# tf.equal(a, b)(或 tf.math.equal(a,b)，两者等价)函数可以比较这 2 个张量是否相等\n",
    "out = tf.equal(pred, y)  #返回布尔类型\n",
    "\n",
    "#计算预测正确个数\n",
    "out = tf.cast(out, dtype=tf.float32)\n",
    "correct =  tf.reduce_sum(out)\n",
    "correct"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 填充与复制"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(4, 32, 32, 1), dtype=float32, numpy=\n",
       "array([[[[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [-0.32953265],\n",
       "         ...,\n",
       "         [-0.74441326],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [-0.140197  ],\n",
       "         ...,\n",
       "         [-0.757734  ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]]],\n",
       "\n",
       "\n",
       "       [[[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 1.1154326 ],\n",
       "         ...,\n",
       "         [-0.13845386],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [-0.01460523],\n",
       "         ...,\n",
       "         [-0.38864067],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]]],\n",
       "\n",
       "\n",
       "       [[[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [-0.27238658],\n",
       "         ...,\n",
       "         [ 0.41277134],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.90426844],\n",
       "         ...,\n",
       "         [ 2.011353  ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]]],\n",
       "\n",
       "\n",
       "       [[[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.00363476],\n",
       "         ...,\n",
       "         [-0.74224323],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [-0.69129366],\n",
       "         ...,\n",
       "         [-0.13053507],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]],\n",
       "\n",
       "        [[ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         ...,\n",
       "         [ 0.        ],\n",
       "         [ 0.        ],\n",
       "         [ 0.        ]]]], dtype=float32)>"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#填充：  tf.pad(x, paddings)函数实现，参数 paddings 是包含了多个\n",
    "#[Left Padding,Right Padding]的嵌套方案 List，如[[0,0],[2,1],[1,2]]表示第一个维度不填\n",
    "#充，第二个维度左边(起始处)填充两个单元，右边(结束处)填充一个单元，第三个维度左边\n",
    "#填充一个单元，右边填充两个单元。\n",
    "#一张图片对其长宽填充 \n",
    "\n",
    "x = tf.random.normal([4,28,28,1])\n",
    "tf.pad(x,[[0,0],[2,2],[2,2],[0,0]])   #图片上下、左右各填充2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(8, 96, 96, 3), dtype=float32, numpy=\n",
       "array([[[[-6.7374313e-01,  8.5754937e-01,  7.6306507e-02],\n",
       "         [-1.3568793e-01, -2.0256302e+00,  1.1916744e+00],\n",
       "         [ 1.7335159e-01,  1.5880692e-01,  1.8723081e-01],\n",
       "         ...,\n",
       "         [-2.9221693e-01,  2.1717729e-02, -1.0073220e+00],\n",
       "         [-2.1677727e-01,  3.7331632e-01,  2.4007361e-01],\n",
       "         [-4.9953142e-01,  7.1273692e-02,  9.9013788e-01]],\n",
       "\n",
       "        [[-1.8665959e-01,  7.1081191e-01,  2.7380483e-02],\n",
       "         [ 6.2950981e-01,  1.5228655e-02, -9.8914242e-01],\n",
       "         [-2.2501674e+00,  6.9069050e-02, -1.5000199e+00],\n",
       "         ...,\n",
       "         [-2.3227897e-01,  2.1922545e+00,  5.9755760e-01],\n",
       "         [-4.9382371e-01, -1.2931308e+00, -2.7577889e-01],\n",
       "         [ 6.8757164e-01,  1.7509827e-01,  9.4719136e-01]],\n",
       "\n",
       "        [[ 1.0783499e+00, -1.7398428e+00, -8.8638216e-01],\n",
       "         [ 5.5526119e-01,  4.7050968e-01,  6.0414052e-01],\n",
       "         [ 3.4769973e-01,  6.3442446e-02,  1.9713328e+00],\n",
       "         ...,\n",
       "         [ 1.3306026e-01,  4.2524499e-01,  4.2803269e-02],\n",
       "         [-6.5728205e-01, -7.9494053e-01, -1.8128471e-01],\n",
       "         [ 2.3122060e-01,  6.3848317e-01,  6.0713482e-01]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[ 4.2151576e-01,  4.3850008e-01,  1.5297893e+00],\n",
       "         [-1.5955745e+00,  1.3354138e+00,  1.5245981e+00],\n",
       "         [-1.8882468e-01, -1.3208057e+00, -6.2968576e-01],\n",
       "         ...,\n",
       "         [ 8.0480479e-02,  2.2441328e-01,  1.7518307e-01],\n",
       "         [ 7.1564043e-01, -1.6803098e+00,  1.8528869e-02],\n",
       "         [ 1.8308663e+00, -4.2539898e-01, -1.9990155e-02]],\n",
       "\n",
       "        [[ 1.5819854e-01, -4.7285542e-01,  2.6671448e-01],\n",
       "         [ 2.6940820e-01,  7.8050560e-01, -5.5359173e-01],\n",
       "         [ 1.9584076e+00,  6.6332674e-01, -1.7829046e-01],\n",
       "         ...,\n",
       "         [ 2.4500734e-01, -1.1469353e+00, -1.6446421e-01],\n",
       "         [-1.8332505e+00,  1.7899604e-01,  2.7739641e-01],\n",
       "         [ 6.8451589e-01, -1.0282888e+00, -1.3980416e+00]],\n",
       "\n",
       "        [[ 6.7266303e-01,  3.1820884e-01, -5.9387517e-01],\n",
       "         [ 2.5779882e-01,  1.6371877e+00, -1.4470427e+00],\n",
       "         [-5.3324932e-01, -4.3549785e-01, -1.5468255e+00],\n",
       "         ...,\n",
       "         [-1.1588711e+00,  1.3022413e+00, -2.1050136e+00],\n",
       "         [ 3.4217748e-01,  4.3521321e-01,  3.1380945e-01],\n",
       "         [-8.2444388e-01, -8.5316497e-01,  1.6527518e+00]]],\n",
       "\n",
       "\n",
       "       [[[-1.6572350e-01, -1.2552396e+00, -5.3520940e-02],\n",
       "         [-4.0873110e-01, -8.2745180e-03, -4.9510565e-02],\n",
       "         [-1.3809629e-01, -1.4055349e+00,  6.5112734e-01],\n",
       "         ...,\n",
       "         [ 1.5545639e+00,  1.0840807e+00, -9.2613465e-01],\n",
       "         [-1.7132218e-01, -1.3845876e+00, -4.0746924e-01],\n",
       "         [-1.5264371e-01, -1.2672434e+00,  8.1292862e-01]],\n",
       "\n",
       "        [[ 2.9633856e-01,  2.8101346e-01, -4.9667209e-01],\n",
       "         [-2.0158291e+00, -3.9249128e-01, -3.6250389e-01],\n",
       "         [-7.4833351e-01, -2.8235674e-01, -3.8123631e-01],\n",
       "         ...,\n",
       "         [-2.8976997e-02,  1.9257894e-01, -1.6964792e+00],\n",
       "         [-3.0183157e-01,  4.5748341e-01, -1.4812731e+00],\n",
       "         [ 4.8215181e-01,  2.1218773e-02, -5.5634475e-01]],\n",
       "\n",
       "        [[ 5.7347107e-01,  7.9595679e-01,  7.1899392e-02],\n",
       "         [ 4.1292858e-01,  7.3963088e-01, -1.6214806e-01],\n",
       "         [ 9.5831740e-01,  9.1732907e-01,  3.7267783e-01],\n",
       "         ...,\n",
       "         [-7.5868046e-01, -2.3076041e-01, -4.6485218e-01],\n",
       "         [ 7.9133481e-02,  4.2579255e-01, -3.6566216e-01],\n",
       "         [ 5.0696814e-01,  2.1560991e+00, -8.1785530e-01]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[ 1.2489688e+00, -1.0719219e+00,  1.4524357e+00],\n",
       "         [ 1.7889012e-01,  1.7935306e-01, -1.5878967e+00],\n",
       "         [-7.0403987e-01,  4.3230308e-03, -3.0469993e-01],\n",
       "         ...,\n",
       "         [ 4.1168800e-01,  1.0266267e+00,  7.7396065e-01],\n",
       "         [ 6.6804808e-01, -5.7109002e-02, -2.0061867e+00],\n",
       "         [ 1.1731489e+00, -2.2275038e+00,  1.2596034e+00]],\n",
       "\n",
       "        [[-8.0789024e-01, -1.4034884e+00, -5.2599025e-01],\n",
       "         [-1.3978979e-01,  5.2583140e-01, -3.0673966e-01],\n",
       "         [-1.9528957e-01, -1.2013732e+00,  9.9675357e-01],\n",
       "         ...,\n",
       "         [ 1.0080636e+00, -4.8805627e-01,  1.3797094e+00],\n",
       "         [ 1.5630199e+00, -7.2677374e-01, -7.1127808e-01],\n",
       "         [-4.0047547e-01, -2.5023246e-01, -2.7551153e-01]],\n",
       "\n",
       "        [[-5.9429683e-02,  1.0815144e+00, -4.5129073e-01],\n",
       "         [-1.6938964e+00, -4.2028862e-01,  1.4317619e+00],\n",
       "         [ 9.6448302e-01, -9.2163593e-01, -1.1507120e+00],\n",
       "         ...,\n",
       "         [-1.4588388e+00,  1.3951248e+00, -5.8413684e-01],\n",
       "         [-1.3047771e-01, -1.8655750e+00,  1.4788251e+00],\n",
       "         [-2.4896095e+00,  7.3873870e-02, -8.8922995e-01]]],\n",
       "\n",
       "\n",
       "       [[[ 6.3576579e-01, -1.3233119e+00,  4.0333793e-02],\n",
       "         [-1.2473888e-01,  5.6854457e-01, -4.4278395e-01],\n",
       "         [ 1.7706988e+00, -7.0800322e-01,  7.3792815e-01],\n",
       "         ...,\n",
       "         [ 2.6730196e+00,  1.3153527e+00,  5.4503661e-01],\n",
       "         [-1.4605993e+00,  2.1553953e+00,  2.8931053e+00],\n",
       "         [-1.7130560e+00, -1.9170769e-01,  1.0900353e-01]],\n",
       "\n",
       "        [[ 5.2368134e-01, -1.6072608e+00,  1.5685953e-01],\n",
       "         [-5.6887746e-01, -8.4826422e-01, -1.8952040e-01],\n",
       "         [ 3.0941880e-01, -8.9797080e-01,  1.4886551e+00],\n",
       "         ...,\n",
       "         [ 1.4891981e+00, -2.4269383e-01,  1.7848122e+00],\n",
       "         [ 1.3484534e+00, -1.1606251e+00,  8.1663001e-01],\n",
       "         [-2.6716139e-02,  2.9453130e+00, -7.3009813e-01]],\n",
       "\n",
       "        [[-2.9692802e-01,  1.5379208e-01, -1.0159856e+00],\n",
       "         [-8.8838089e-01,  6.8620354e-02, -6.8114012e-02],\n",
       "         [-5.1008415e-01, -3.0375379e-01, -1.0572151e+00],\n",
       "         ...,\n",
       "         [ 3.5872149e-01, -2.9183128e-01, -9.6192503e-01],\n",
       "         [ 1.4489718e-01,  1.2686623e+00,  3.1158534e-01],\n",
       "         [ 3.9883024e-01,  2.0015794e-01, -3.7159869e-01]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[-6.5947950e-01, -1.0050477e+00,  1.0669947e+00],\n",
       "         [ 8.1936592e-01,  4.2103934e-01,  8.0781078e-01],\n",
       "         [ 9.9613792e-01, -9.0923285e-01,  2.0505779e+00],\n",
       "         ...,\n",
       "         [-6.8418312e-01, -1.8955669e-01,  1.4912378e+00],\n",
       "         [ 2.0874503e-01,  2.6619220e-01,  6.4264148e-01],\n",
       "         [ 4.1350904e-01, -4.9858347e-01,  1.1655266e+00]],\n",
       "\n",
       "        [[-3.3433491e-01, -1.5251573e+00,  1.3834964e+00],\n",
       "         [ 9.4160128e-01, -5.9278166e-01, -1.3450561e+00],\n",
       "         [-5.1807898e-01,  2.8306088e-01, -1.1112798e+00],\n",
       "         ...,\n",
       "         [ 5.7268918e-01, -2.2509202e-01,  7.7968067e-01],\n",
       "         [-6.5904111e-01, -1.1454911e+00,  1.4686837e+00],\n",
       "         [ 2.7091578e-01,  9.9101372e-02,  2.9613329e-02]],\n",
       "\n",
       "        [[ 5.0129163e-01,  8.6901501e-02,  1.6466355e+00],\n",
       "         [ 5.9701461e-01,  7.8077137e-02, -2.9543674e-01],\n",
       "         [ 1.3957851e+00, -1.6514049e+00, -8.4883976e-01],\n",
       "         ...,\n",
       "         [-2.0323375e-01, -1.1731692e-01,  1.0054320e+00],\n",
       "         [-1.0741312e-01,  7.5867653e-01,  1.6525672e-01],\n",
       "         [-7.7426368e-01,  5.2449304e-01, -4.6920502e-01]]],\n",
       "\n",
       "\n",
       "       ...,\n",
       "\n",
       "\n",
       "       [[[-1.6572350e-01, -1.2552396e+00, -5.3520940e-02],\n",
       "         [-4.0873110e-01, -8.2745180e-03, -4.9510565e-02],\n",
       "         [-1.3809629e-01, -1.4055349e+00,  6.5112734e-01],\n",
       "         ...,\n",
       "         [ 1.5545639e+00,  1.0840807e+00, -9.2613465e-01],\n",
       "         [-1.7132218e-01, -1.3845876e+00, -4.0746924e-01],\n",
       "         [-1.5264371e-01, -1.2672434e+00,  8.1292862e-01]],\n",
       "\n",
       "        [[ 2.9633856e-01,  2.8101346e-01, -4.9667209e-01],\n",
       "         [-2.0158291e+00, -3.9249128e-01, -3.6250389e-01],\n",
       "         [-7.4833351e-01, -2.8235674e-01, -3.8123631e-01],\n",
       "         ...,\n",
       "         [-2.8976997e-02,  1.9257894e-01, -1.6964792e+00],\n",
       "         [-3.0183157e-01,  4.5748341e-01, -1.4812731e+00],\n",
       "         [ 4.8215181e-01,  2.1218773e-02, -5.5634475e-01]],\n",
       "\n",
       "        [[ 5.7347107e-01,  7.9595679e-01,  7.1899392e-02],\n",
       "         [ 4.1292858e-01,  7.3963088e-01, -1.6214806e-01],\n",
       "         [ 9.5831740e-01,  9.1732907e-01,  3.7267783e-01],\n",
       "         ...,\n",
       "         [-7.5868046e-01, -2.3076041e-01, -4.6485218e-01],\n",
       "         [ 7.9133481e-02,  4.2579255e-01, -3.6566216e-01],\n",
       "         [ 5.0696814e-01,  2.1560991e+00, -8.1785530e-01]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[ 1.2489688e+00, -1.0719219e+00,  1.4524357e+00],\n",
       "         [ 1.7889012e-01,  1.7935306e-01, -1.5878967e+00],\n",
       "         [-7.0403987e-01,  4.3230308e-03, -3.0469993e-01],\n",
       "         ...,\n",
       "         [ 4.1168800e-01,  1.0266267e+00,  7.7396065e-01],\n",
       "         [ 6.6804808e-01, -5.7109002e-02, -2.0061867e+00],\n",
       "         [ 1.1731489e+00, -2.2275038e+00,  1.2596034e+00]],\n",
       "\n",
       "        [[-8.0789024e-01, -1.4034884e+00, -5.2599025e-01],\n",
       "         [-1.3978979e-01,  5.2583140e-01, -3.0673966e-01],\n",
       "         [-1.9528957e-01, -1.2013732e+00,  9.9675357e-01],\n",
       "         ...,\n",
       "         [ 1.0080636e+00, -4.8805627e-01,  1.3797094e+00],\n",
       "         [ 1.5630199e+00, -7.2677374e-01, -7.1127808e-01],\n",
       "         [-4.0047547e-01, -2.5023246e-01, -2.7551153e-01]],\n",
       "\n",
       "        [[-5.9429683e-02,  1.0815144e+00, -4.5129073e-01],\n",
       "         [-1.6938964e+00, -4.2028862e-01,  1.4317619e+00],\n",
       "         [ 9.6448302e-01, -9.2163593e-01, -1.1507120e+00],\n",
       "         ...,\n",
       "         [-1.4588388e+00,  1.3951248e+00, -5.8413684e-01],\n",
       "         [-1.3047771e-01, -1.8655750e+00,  1.4788251e+00],\n",
       "         [-2.4896095e+00,  7.3873870e-02, -8.8922995e-01]]],\n",
       "\n",
       "\n",
       "       [[[ 6.3576579e-01, -1.3233119e+00,  4.0333793e-02],\n",
       "         [-1.2473888e-01,  5.6854457e-01, -4.4278395e-01],\n",
       "         [ 1.7706988e+00, -7.0800322e-01,  7.3792815e-01],\n",
       "         ...,\n",
       "         [ 2.6730196e+00,  1.3153527e+00,  5.4503661e-01],\n",
       "         [-1.4605993e+00,  2.1553953e+00,  2.8931053e+00],\n",
       "         [-1.7130560e+00, -1.9170769e-01,  1.0900353e-01]],\n",
       "\n",
       "        [[ 5.2368134e-01, -1.6072608e+00,  1.5685953e-01],\n",
       "         [-5.6887746e-01, -8.4826422e-01, -1.8952040e-01],\n",
       "         [ 3.0941880e-01, -8.9797080e-01,  1.4886551e+00],\n",
       "         ...,\n",
       "         [ 1.4891981e+00, -2.4269383e-01,  1.7848122e+00],\n",
       "         [ 1.3484534e+00, -1.1606251e+00,  8.1663001e-01],\n",
       "         [-2.6716139e-02,  2.9453130e+00, -7.3009813e-01]],\n",
       "\n",
       "        [[-2.9692802e-01,  1.5379208e-01, -1.0159856e+00],\n",
       "         [-8.8838089e-01,  6.8620354e-02, -6.8114012e-02],\n",
       "         [-5.1008415e-01, -3.0375379e-01, -1.0572151e+00],\n",
       "         ...,\n",
       "         [ 3.5872149e-01, -2.9183128e-01, -9.6192503e-01],\n",
       "         [ 1.4489718e-01,  1.2686623e+00,  3.1158534e-01],\n",
       "         [ 3.9883024e-01,  2.0015794e-01, -3.7159869e-01]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[-6.5947950e-01, -1.0050477e+00,  1.0669947e+00],\n",
       "         [ 8.1936592e-01,  4.2103934e-01,  8.0781078e-01],\n",
       "         [ 9.9613792e-01, -9.0923285e-01,  2.0505779e+00],\n",
       "         ...,\n",
       "         [-6.8418312e-01, -1.8955669e-01,  1.4912378e+00],\n",
       "         [ 2.0874503e-01,  2.6619220e-01,  6.4264148e-01],\n",
       "         [ 4.1350904e-01, -4.9858347e-01,  1.1655266e+00]],\n",
       "\n",
       "        [[-3.3433491e-01, -1.5251573e+00,  1.3834964e+00],\n",
       "         [ 9.4160128e-01, -5.9278166e-01, -1.3450561e+00],\n",
       "         [-5.1807898e-01,  2.8306088e-01, -1.1112798e+00],\n",
       "         ...,\n",
       "         [ 5.7268918e-01, -2.2509202e-01,  7.7968067e-01],\n",
       "         [-6.5904111e-01, -1.1454911e+00,  1.4686837e+00],\n",
       "         [ 2.7091578e-01,  9.9101372e-02,  2.9613329e-02]],\n",
       "\n",
       "        [[ 5.0129163e-01,  8.6901501e-02,  1.6466355e+00],\n",
       "         [ 5.9701461e-01,  7.8077137e-02, -2.9543674e-01],\n",
       "         [ 1.3957851e+00, -1.6514049e+00, -8.4883976e-01],\n",
       "         ...,\n",
       "         [-2.0323375e-01, -1.1731692e-01,  1.0054320e+00],\n",
       "         [-1.0741312e-01,  7.5867653e-01,  1.6525672e-01],\n",
       "         [-7.7426368e-01,  5.2449304e-01, -4.6920502e-01]]],\n",
       "\n",
       "\n",
       "       [[[-2.1485031e+00,  6.9517702e-01, -2.7675024e-01],\n",
       "         [-2.9248276e-01, -3.1702176e-01, -1.1581476e+00],\n",
       "         [-2.5925992e+00,  4.4564086e-01,  4.8572439e-01],\n",
       "         ...,\n",
       "         [ 1.2609477e+00,  1.1466690e+00,  4.8393199e-01],\n",
       "         [ 1.0671985e+00,  3.2740170e-01,  7.9745352e-02],\n",
       "         [-1.2116060e+00, -7.3674721e-01, -2.7401620e-01]],\n",
       "\n",
       "        [[ 2.5488788e-01,  1.4944335e+00, -5.2191043e-01],\n",
       "         [ 3.3574304e-01,  6.7643142e-01,  1.7181048e-03],\n",
       "         [ 1.1639940e+00,  8.8846856e-01, -1.2853059e+00],\n",
       "         ...,\n",
       "         [-9.4816633e-02,  1.0246845e+00,  3.0249059e-01],\n",
       "         [-4.2610225e-01, -4.9273688e-01,  7.0436537e-01],\n",
       "         [-5.5829912e-01, -1.1998078e+00,  1.0998583e+00]],\n",
       "\n",
       "        [[-6.3588989e-01, -1.2500973e+00, -5.8122200e-01],\n",
       "         [ 1.9602530e+00,  1.5175099e+00,  4.2476874e-02],\n",
       "         [-2.1474980e-01, -4.1156554e-01,  1.0742745e+00],\n",
       "         ...,\n",
       "         [ 7.7057290e-01, -5.7784730e-01,  2.4491799e+00],\n",
       "         [ 4.1618666e-01,  3.0845851e-02,  1.5344605e-01],\n",
       "         [-1.7934580e+00, -2.1852188e+00, -1.0600988e+00]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[ 1.2101809e+00, -6.1720777e-01, -2.2094682e-02],\n",
       "         [-1.6865656e-02, -6.3028157e-01,  9.4438404e-01],\n",
       "         [-7.3393369e-01, -2.4748187e-01, -2.4376766e-01],\n",
       "         ...,\n",
       "         [ 2.4866623e-01, -9.2076622e-02, -8.4145421e-01],\n",
       "         [ 8.7266546e-01, -1.0319777e+00, -1.0028485e-01],\n",
       "         [ 9.3887126e-01,  1.3265295e+00, -2.1465358e-01]],\n",
       "\n",
       "        [[-1.3014550e+00,  2.2488823e+00, -2.1320207e+00],\n",
       "         [ 1.2554573e-01,  7.6321453e-01, -1.6791770e+00],\n",
       "         [ 3.7766121e-02,  1.5100352e-01, -5.6549394e-01],\n",
       "         ...,\n",
       "         [ 6.1921573e-01,  1.2621135e+00,  2.1927860e+00],\n",
       "         [ 1.1821288e+00,  1.1480082e-01,  5.9170121e-01],\n",
       "         [-1.5168800e+00, -1.5369357e+00, -2.5785410e-01]],\n",
       "\n",
       "        [[-1.7006992e-01, -2.6813138e-01, -4.4455257e-01],\n",
       "         [-1.3652775e+00, -5.8392900e-01, -5.4255718e-01],\n",
       "         [ 2.9106483e-01,  1.6455994e+00,  4.5894552e-02],\n",
       "         ...,\n",
       "         [-8.8210547e-01, -1.4951707e-01,  4.5495802e-01],\n",
       "         [-1.0594589e+00,  4.5420591e-02, -1.9932489e-01],\n",
       "         [-4.2849073e-01, -1.0991399e+00, -8.8723177e-01]]]],\n",
       "      dtype=float32)>"
      ]
     },
     "execution_count": 147,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#复制\n",
    "x = tf.random.normal([4,32,32,3])\n",
    "tf.tile(x, [2,3,3,1])\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据限幅"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(<tf.Tensor: shape=(9,), dtype=int32, numpy=array([2, 2, 2, 3, 4, 5, 6, 7, 7])>,\n",
       " <tf.Tensor: shape=(9,), dtype=int32, numpy=array([2, 2, 2, 3, 4, 5, 6, 7, 7])>)"
      ]
     },
     "execution_count": 153,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#限制数据取值范围，超出范围用最值填充\n",
    "\n",
    "x = tf.range(9)\n",
    "#下限为2\n",
    "tf.maximum(x,2) \n",
    "\n",
    "#上限为7\n",
    "tf.minimum(x,7)\n",
    "\n",
    "#限制为【2-7】\n",
    "tf.minimum(tf.maximum(x,2),7), tf.clip_by_value(x,2,7)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 高级操作"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### tf.gather"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "tf.gather 可以实现根据索引号收集数据的目的。考虑班级成绩册的例子，假设共有 4\n",
    "个班级，每个班级 35 个学生，8 门科目，保存成绩册的张量 shape 为[4,35,8]。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = tf.random.uniform([4,35,8], maxval=100, dtype=tf.int32)   #成绩册"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 35, 8), dtype=int32, numpy=\n",
       "array([[[40, 84, 77, 20, 71, 37, 12, 41],\n",
       "        [75, 42, 60, 33, 34, 65, 48, 55],\n",
       "        [ 7, 73, 27, 75,  4, 99, 62, 28],\n",
       "        [ 9, 11, 43,  0, 71,  3, 75, 40],\n",
       "        [ 0, 53, 96, 81, 53, 94, 98, 33],\n",
       "        [90, 85, 73, 95, 99, 47, 95, 25],\n",
       "        [17, 88, 55,  9, 20, 58, 11, 56],\n",
       "        [36, 35, 23, 30, 31, 81, 49, 66],\n",
       "        [72, 97, 69, 57, 93, 12, 76, 10],\n",
       "        [52, 88, 56, 14, 99, 13, 56, 41],\n",
       "        [49, 86, 71, 29, 83, 75, 21, 37],\n",
       "        [48,  6, 90, 19, 68, 83, 72, 95],\n",
       "        [45, 83, 30, 49, 59, 85, 32,  1],\n",
       "        [42, 67, 93, 21, 95, 71, 97, 49],\n",
       "        [ 4, 51, 63, 45, 68, 62, 29, 95],\n",
       "        [48, 58, 24,  5, 28, 46, 89, 76],\n",
       "        [99, 52,  8,  2, 98, 54, 27, 51],\n",
       "        [85, 56, 89, 98,  4, 51, 75, 84],\n",
       "        [39, 59, 40, 20, 87, 61, 33, 15],\n",
       "        [23, 71, 67, 70, 90, 77, 36, 71],\n",
       "        [80, 70, 82, 21, 11, 68, 34, 78],\n",
       "        [75, 96, 66, 68, 20, 67, 81, 45],\n",
       "        [86, 63, 54, 68, 15, 85, 95, 52],\n",
       "        [50, 55, 69, 38, 68, 59, 56,  7],\n",
       "        [93, 30, 27, 97, 59, 61, 76, 20],\n",
       "        [77, 37, 31, 29, 49, 28, 70,  3],\n",
       "        [67,  8, 29, 16, 54, 18, 46, 43],\n",
       "        [46, 89,  7, 26, 31, 67, 35, 30],\n",
       "        [66, 70, 36, 98, 71, 52, 57,  3],\n",
       "        [ 9, 13,  0, 82,  1, 14, 84, 34],\n",
       "        [89, 97,  3, 10, 38,  0, 15,  0],\n",
       "        [37, 28, 86, 59, 53, 97, 66,  1],\n",
       "        [40, 90, 81, 58, 93, 16, 34, 47],\n",
       "        [39, 76, 23, 18, 75, 37, 10, 41],\n",
       "        [86, 95, 11,  4, 57, 52, 12, 27]],\n",
       "\n",
       "       [[59, 42, 15, 89, 51, 77,  3, 34],\n",
       "        [27,  4, 34, 42, 44,  0, 56, 51],\n",
       "        [17, 91, 33, 65, 97, 33, 42, 17],\n",
       "        [82, 79, 51, 93, 27,  4, 13, 12],\n",
       "        [23, 45, 10, 52, 59, 64, 29, 35],\n",
       "        [48, 86, 99, 43, 62, 60, 98, 10],\n",
       "        [ 3, 97, 22, 33, 27, 24, 35, 25],\n",
       "        [93, 13, 40, 34, 61, 21,  0, 69],\n",
       "        [15, 22, 93, 39, 81, 28, 53, 28],\n",
       "        [19, 35, 64, 93, 65, 41, 29, 92],\n",
       "        [18, 55, 97, 15, 93, 95, 87, 40],\n",
       "        [43, 24, 58, 56, 89, 65, 58, 10],\n",
       "        [29, 32, 92, 94, 38, 88,  8, 77],\n",
       "        [33, 80, 99, 35, 90, 24, 90, 91],\n",
       "        [84, 39, 15, 20, 21, 34,  2, 25],\n",
       "        [62, 79, 20, 50, 69, 73, 58, 89],\n",
       "        [40, 65, 72, 55, 86, 22, 10, 77],\n",
       "        [34, 34, 67,  0, 13, 90, 98, 48],\n",
       "        [49, 16, 52, 39, 14, 68,  7, 45],\n",
       "        [94, 30, 69, 82, 55, 91, 30, 16],\n",
       "        [98, 45, 39, 86, 90, 67, 29, 91],\n",
       "        [22, 20, 87, 10, 49,  1, 17, 76],\n",
       "        [90, 33, 31, 98, 77, 19, 83, 36],\n",
       "        [25, 16, 30, 32, 34, 45, 34, 29],\n",
       "        [39, 55, 97, 40, 50, 97, 10, 67],\n",
       "        [83,  7, 37, 96, 21, 34, 49, 95],\n",
       "        [69,  2,  3, 25, 27, 48, 44, 22],\n",
       "        [20, 47, 68, 42, 20, 31, 33, 86],\n",
       "        [74, 31, 28, 27, 93,  9, 79,  7],\n",
       "        [77, 35, 74, 45, 21, 79, 28, 94],\n",
       "        [96, 84, 65, 22, 62, 68, 79, 29],\n",
       "        [65, 13, 10, 92, 84,  7, 91, 77],\n",
       "        [39, 45, 78, 64, 22, 65, 15, 73],\n",
       "        [90, 15, 71, 17, 16,  3, 21, 64],\n",
       "        [25, 12,  3, 61, 13, 29,  8, 72]]])>"
      ]
     },
     "execution_count": 155,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#提取1~2号班级成绩册\n",
    "#现在需要收集第 1~2 个班级的成绩册，可以给定需要收集班级的索引号：[0,1]，并指定班级的维度 axis=0\n",
    "tf.gather(x,[0,1],axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(4, 6, 8), dtype=int32, numpy=\n",
       "array([[[40, 84, 77, 20, 71, 37, 12, 41],\n",
       "        [ 9, 11, 43,  0, 71,  3, 75, 40],\n",
       "        [72, 97, 69, 57, 93, 12, 76, 10],\n",
       "        [48,  6, 90, 19, 68, 83, 72, 95],\n",
       "        [45, 83, 30, 49, 59, 85, 32,  1],\n",
       "        [67,  8, 29, 16, 54, 18, 46, 43]],\n",
       "\n",
       "       [[59, 42, 15, 89, 51, 77,  3, 34],\n",
       "        [82, 79, 51, 93, 27,  4, 13, 12],\n",
       "        [15, 22, 93, 39, 81, 28, 53, 28],\n",
       "        [43, 24, 58, 56, 89, 65, 58, 10],\n",
       "        [29, 32, 92, 94, 38, 88,  8, 77],\n",
       "        [69,  2,  3, 25, 27, 48, 44, 22]],\n",
       "\n",
       "       [[85, 54, 32, 40, 87, 81, 33, 21],\n",
       "        [96, 90, 78, 40, 86, 23,  6, 27],\n",
       "        [53, 79, 39, 36, 19, 77,  7, 54],\n",
       "        [29, 16, 19, 57, 96, 87, 60, 63],\n",
       "        [47, 43, 35, 59, 31, 28, 89, 45],\n",
       "        [14, 43, 43, 91,  8, 22, 64, 27]],\n",
       "\n",
       "       [[71, 76,  8, 14, 30, 22, 26, 98],\n",
       "        [82, 32, 24, 72,  0, 10,  5, 54],\n",
       "        [67, 71, 51, 76, 21, 29, 28, 89],\n",
       "        [ 9,  5, 49, 46, 74, 51, 51, 12],\n",
       "        [77, 71, 29, 75, 49, 77, 28, 68],\n",
       "        [97, 56, 36, 10, 11, 68,  8, 86]]])>"
      ]
     },
     "execution_count": 156,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 收集每个班第 1,4,9,12,13,27 号同学成绩\n",
    "tf.gather(x,[0,3,8,11,12,26], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 4, 8), dtype=int32, numpy=\n",
       "array([[[17, 91, 33, 65, 97, 33, 42, 17],\n",
       "        [82, 79, 51, 93, 27,  4, 13, 12],\n",
       "        [48, 86, 99, 43, 62, 60, 98, 10],\n",
       "        [69,  2,  3, 25, 27, 48, 44, 22]],\n",
       "\n",
       "       [[12,  7, 43, 40, 38, 99, 84, 65],\n",
       "        [96, 90, 78, 40, 86, 23,  6, 27],\n",
       "        [96, 57, 24,  0, 77, 26, 12, 67],\n",
       "        [14, 43, 43, 91,  8, 22, 64, 27]]])>"
      ]
     },
     "execution_count": 158,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#抽查第[2,3]班级的第[3,4,6,27]号同学的科目成绩，则可以通过组合多个 tf.gather 实现\n",
    "student = tf.gather(x,[1,2],axis=0)\n",
    "tf.gather(student,[2,3,5,26],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(3, 8), dtype=int32, numpy=\n",
       "array([[27,  4, 34, 42, 44,  0, 56, 51],\n",
       "       [12,  7, 43, 40, 38, 99, 84, 65],\n",
       "       [82, 32, 24, 72,  0, 10,  5, 54]])>"
      ]
     },
     "execution_count": 162,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#抽查第 2 个班级的第 2 个同学的所有科目，第 3 个班级的第 3 个同学的所有科目，第 4 个班级的第 4 个同学的所有科目。\n",
    "\n",
    "x[1,1]   #第 2 个班级的第 2 个同学的所有科目\n",
    "x[2,2]   #第 3 个班级的第 3 个同学的所有科目\n",
    "x[3,3]   #第 4 个班级的第 4 个同学的所有科目。\n",
    "\n",
    "#合并\n",
    "tf.stack([x[1,1],x[2,2],x[3,3]], axis=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####  tf.gather_nd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " tf.gather_nd 函数，可以通过指定每次采样点的多维坐标来实现采样多个点的目\n",
    "的。回到上面的挑战，我们希望抽查第 2 个班级的第 2 个同学的所有科目，第 3 个班级的\n",
    "第 3 个同学的所有科目，第 4 个班级的第 4 个同学的所有科目。那么这 3 个采样点的索引\n",
    "坐标可以记为：[1,1]、[2,2]、[3,3]，我们将这个采样方案合并为一个 List 参数，即\n",
    "[[1,1],[2,2],[3,3]]，通过 tf.gather_nd 函数即可."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(3, 8), dtype=int32, numpy=\n",
       "array([[27,  4, 34, 42, 44,  0, 56, 51],\n",
       "       [12,  7, 43, 40, 38, 99, 84, 65],\n",
       "       [82, 32, 24, 72,  0, 10,  5, 54]])>"
      ]
     },
     "execution_count": 163,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.gather_nd(x,[[1,1],[2,2],[3,3]])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### tf.boolean_mask"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " tf.boolean_mask(x, mask, axis)可以在 axis 轴上根据\n",
    "mask 方案进行采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 35, 8), dtype=int32, numpy=\n",
       "array([[[40, 84, 77, 20, 71, 37, 12, 41],\n",
       "        [75, 42, 60, 33, 34, 65, 48, 55],\n",
       "        [ 7, 73, 27, 75,  4, 99, 62, 28],\n",
       "        [ 9, 11, 43,  0, 71,  3, 75, 40],\n",
       "        [ 0, 53, 96, 81, 53, 94, 98, 33],\n",
       "        [90, 85, 73, 95, 99, 47, 95, 25],\n",
       "        [17, 88, 55,  9, 20, 58, 11, 56],\n",
       "        [36, 35, 23, 30, 31, 81, 49, 66],\n",
       "        [72, 97, 69, 57, 93, 12, 76, 10],\n",
       "        [52, 88, 56, 14, 99, 13, 56, 41],\n",
       "        [49, 86, 71, 29, 83, 75, 21, 37],\n",
       "        [48,  6, 90, 19, 68, 83, 72, 95],\n",
       "        [45, 83, 30, 49, 59, 85, 32,  1],\n",
       "        [42, 67, 93, 21, 95, 71, 97, 49],\n",
       "        [ 4, 51, 63, 45, 68, 62, 29, 95],\n",
       "        [48, 58, 24,  5, 28, 46, 89, 76],\n",
       "        [99, 52,  8,  2, 98, 54, 27, 51],\n",
       "        [85, 56, 89, 98,  4, 51, 75, 84],\n",
       "        [39, 59, 40, 20, 87, 61, 33, 15],\n",
       "        [23, 71, 67, 70, 90, 77, 36, 71],\n",
       "        [80, 70, 82, 21, 11, 68, 34, 78],\n",
       "        [75, 96, 66, 68, 20, 67, 81, 45],\n",
       "        [86, 63, 54, 68, 15, 85, 95, 52],\n",
       "        [50, 55, 69, 38, 68, 59, 56,  7],\n",
       "        [93, 30, 27, 97, 59, 61, 76, 20],\n",
       "        [77, 37, 31, 29, 49, 28, 70,  3],\n",
       "        [67,  8, 29, 16, 54, 18, 46, 43],\n",
       "        [46, 89,  7, 26, 31, 67, 35, 30],\n",
       "        [66, 70, 36, 98, 71, 52, 57,  3],\n",
       "        [ 9, 13,  0, 82,  1, 14, 84, 34],\n",
       "        [89, 97,  3, 10, 38,  0, 15,  0],\n",
       "        [37, 28, 86, 59, 53, 97, 66,  1],\n",
       "        [40, 90, 81, 58, 93, 16, 34, 47],\n",
       "        [39, 76, 23, 18, 75, 37, 10, 41],\n",
       "        [86, 95, 11,  4, 57, 52, 12, 27]],\n",
       "\n",
       "       [[71, 76,  8, 14, 30, 22, 26, 98],\n",
       "        [21, 92, 39, 34,  7, 96, 35, 55],\n",
       "        [80, 97, 75, 78, 89, 47, 95, 43],\n",
       "        [82, 32, 24, 72,  0, 10,  5, 54],\n",
       "        [53, 16, 92, 45, 50, 28, 40, 84],\n",
       "        [92, 19, 18, 26, 75, 25, 80, 61],\n",
       "        [37,  8, 57, 85, 51,  0, 40, 64],\n",
       "        [37, 87, 14, 75, 40, 72, 91, 45],\n",
       "        [67, 71, 51, 76, 21, 29, 28, 89],\n",
       "        [49, 58,  3, 69, 13, 59, 19, 41],\n",
       "        [27, 42,  9, 46, 73, 65, 68, 59],\n",
       "        [ 9,  5, 49, 46, 74, 51, 51, 12],\n",
       "        [77, 71, 29, 75, 49, 77, 28, 68],\n",
       "        [ 4, 58, 13, 88, 47, 84, 81, 99],\n",
       "        [61, 21, 49,  2, 89, 23, 34,  3],\n",
       "        [94, 14, 74, 98, 97,  9,  6, 38],\n",
       "        [55,  5, 30,  1, 57, 36, 87, 57],\n",
       "        [43, 16, 89, 78, 79, 75, 79, 18],\n",
       "        [68,  5, 42,  1,  4, 80, 74, 93],\n",
       "        [88, 13, 13, 98, 28, 46, 67, 21],\n",
       "        [40, 29,  7, 31, 82, 49, 75, 70],\n",
       "        [68, 63, 85, 16, 73,  1, 13,  1],\n",
       "        [30, 19, 33, 24, 84, 20, 96, 97],\n",
       "        [57, 53, 17, 16, 58, 81, 63, 51],\n",
       "        [55, 25, 74, 43, 20,  1, 82, 84],\n",
       "        [90, 82, 46, 58,  6, 60, 75, 58],\n",
       "        [97, 56, 36, 10, 11, 68,  8, 86],\n",
       "        [13, 73, 25, 91, 92, 40, 53, 21],\n",
       "        [76, 86,  3, 52, 26, 53, 35, 96],\n",
       "        [ 2, 60, 94, 50, 46, 67, 46, 44],\n",
       "        [94, 72, 33, 56, 23,  8, 14, 49],\n",
       "        [87, 27, 88, 17, 51, 30, 37, 76],\n",
       "        [35, 32, 73, 35, 77,  5, 76, 86],\n",
       "        [38, 97, 25, 66, 73,  6, 36, 81],\n",
       "        [ 5, 89, 64, 91, 47, 14, 71, 72]]])>"
      ]
     },
     "execution_count": 166,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.boolean_mask(x,mask=[True,False,False,True], axis=0)   #选择维度，根据布尔值判断是否选择此索引值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tf.Tensor(\n",
      "[[12 16 20 41 31 95 74 80]\n",
      " [69 72 88 16 72 81 41 47]\n",
      " [59 19 18 58  7 48 65 89]\n",
      " [87 25 28 77 58 33 18 74]], shape=(4, 8), dtype=int32)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(4, 8), dtype=int32, numpy=\n",
       "array([[12, 16, 20, 41, 31, 95, 74, 80],\n",
       "       [69, 72, 88, 16, 72, 81, 41, 47],\n",
       "       [59, 19, 18, 58,  7, 48, 65, 89],\n",
       "       [87, 25, 28, 77, 58, 33, 18, 74]])>"
      ]
     },
     "execution_count": 169,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#采样第 1 个班级的第 1~2 号学生，第 2 个班级的第 2~3 号学生，通过tf.gather_nd \n",
    "x = tf.random.uniform([2,3,8], maxval=100, dtype=tf.int32)\n",
    "print(tf.gather_nd(x,[[0,0],[0,1],[1,1],[1,2]]))\n",
    "\n",
    "#用掩码方式实现\n",
    "tf.boolean_mask(x,[[True,True,False],[False,True,True]])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### MNIST测试实战"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {},
   "outputs": [],
   "source": [
    "#%%\n",
    "import  matplotlib\n",
    "from    matplotlib import pyplot as plt\n",
    "# Default parameters for plots\n",
    "matplotlib.rcParams['font.size'] = 20\n",
    "matplotlib.rcParams['figure.titlesize'] = 20\n",
    "matplotlib.rcParams['figure.figsize'] = [9, 7]\n",
    "matplotlib.rcParams['font.family'] = ['STKaiTi']\n",
    "matplotlib.rcParams['axes.unicode_minus']=False \n",
    "import  tensorflow as tf\n",
    "from    tensorflow import keras\n",
    "from    tensorflow.keras import datasets, layers, optimizers\n",
    "import  os\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x: (60000, 28, 28)  y: (60000,)  x_test: (10000, 28, 28)  y_test: [7 2 1 ... 4 5 6]\n",
      "(None, 28, 28) (None,)\n",
      "(None, 28, 28) (None,)\n",
      "train sample: (512, 784) (512, 10)\n"
     ]
    }
   ],
   "source": [
    "#数据预处理\n",
    "def preprocess(x, y):\n",
    "    print(x.shape, y.shape)\n",
    "    x = tf.cast(x, dtype=tf.float32) / 255.\n",
    "    x = tf.reshape(x, [-1,28*28])\n",
    "    y = tf.cast(y,dtype=tf.int32)\n",
    "    y = tf.one_hot(y,depth=10)\n",
    "    \n",
    "    return x,y\n",
    "\n",
    "#数据准备\n",
    "(x, y), (x_test, y_test) = datasets.mnist.load_data()\n",
    "print('x:',x.shape, ' y:',y.shape, ' x_test:',x_test.shape,' y_test:',y_test)\n",
    "\n",
    "batchsz = 512\n",
    "train_db = tf.data.Dataset.from_tensor_slices((x, y))\n",
    "train_db = train_db.shuffle(1000)   #数据打乱\n",
    "train_db = train_db.batch(batchsz)\n",
    "train_db = train_db.map(preprocess)\n",
    "train_db = train_db.repeat(20)   #数据复制20份\n",
    "\n",
    "test_db = tf.data.Dataset.from_tensor_slices((x_test, y_test))\n",
    "test_db = test_db.shuffle(1000).batch(batchsz).map(preprocess)\n",
    "x,y = next(iter(train_db))   #迭代器\n",
    "print('train sample:', x.shape, y.shape)\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 loss: 0.6015681028366089\n",
      "0 Evaluate Acc: 0.1002\n",
      "80 loss: 0.19178982079029083\n",
      "80 Evaluate Acc: 0.194\n",
      "160 loss: 0.14799541234970093\n",
      "160 Evaluate Acc: 0.2909\n",
      "240 loss: 0.12657612562179565\n",
      "240 Evaluate Acc: 0.3681\n",
      "320 loss: 0.10828477144241333\n",
      "320 Evaluate Acc: 0.4336\n",
      "400 loss: 0.10876524448394775\n",
      "400 Evaluate Acc: 0.477\n",
      "480 loss: 0.09835504740476608\n",
      "480 Evaluate Acc: 0.5138\n",
      "560 loss: 0.09362287074327469\n",
      "560 Evaluate Acc: 0.5462\n",
      "640 loss: 0.09057662636041641\n",
      "640 Evaluate Acc: 0.5668\n",
      "720 loss: 0.08323197066783905\n",
      "720 Evaluate Acc: 0.5894\n",
      "800 loss: 0.08292033523321152\n",
      "800 Evaluate Acc: 0.6085\n",
      "880 loss: 0.07672928273677826\n",
      "880 Evaluate Acc: 0.6234\n",
      "960 loss: 0.08054142445325851\n",
      "960 Evaluate Acc: 0.6369\n",
      "1040 loss: 0.07502372562885284\n",
      "1040 Evaluate Acc: 0.6492\n",
      "1120 loss: 0.07662545144557953\n",
      "1120 Evaluate Acc: 0.6607\n",
      "1200 loss: 0.06490261852741241\n",
      "1200 Evaluate Acc: 0.6704\n",
      "1280 loss: 0.06826891750097275\n",
      "1280 Evaluate Acc: 0.6814\n",
      "1360 loss: 0.06806852668523788\n",
      "1360 Evaluate Acc: 0.6914\n",
      "1440 loss: 0.06650404632091522\n",
      "1440 Evaluate Acc: 0.698\n",
      "1520 loss: 0.06362710148096085\n",
      "1520 Evaluate Acc: 0.7069\n",
      "1600 loss: 0.06182899326086044\n",
      "1600 Evaluate Acc: 0.715\n",
      "1680 loss: 0.06379386782646179\n",
      "1680 Evaluate Acc: 0.7222\n",
      "1760 loss: 0.058429695665836334\n",
      "1760 Evaluate Acc: 0.7297\n",
      "1840 loss: 0.0601913221180439\n",
      "1840 Evaluate Acc: 0.7355\n",
      "1920 loss: 0.0643366128206253\n",
      "1920 Evaluate Acc: 0.7403\n",
      "2000 loss: 0.05707132816314697\n",
      "2000 Evaluate Acc: 0.7469\n",
      "2080 loss: 0.05687462538480759\n",
      "2080 Evaluate Acc: 0.7512\n",
      "2160 loss: 0.05560334771871567\n",
      "2160 Evaluate Acc: 0.755\n",
      "2240 loss: 0.05061490461230278\n",
      "2240 Evaluate Acc: 0.7596\n",
      "2320 loss: 0.05374414846301079\n",
      "2320 Evaluate Acc: 0.7637\n"
     ]
    },
    {
     "data": {
      "image/png": "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RdOmTdNtt92maDSqdevW6bbbbtO9996ru+66S/X19dq8ebM+8IEPDOprGKiwl2qQu2+QdFGWffdIqs6w/U+S/hRwaX1WVZH6NtbRggMAKCLjx4/XihU7h7mef/75Ovjgg7ueNzc3Kx6PS3p7i42Z5eymeuyxx3T99dfrwQcfVENDgzZs2KCpU6fq+eef1y233KJjjjlGp59+uo488khJUltbW1eQKpTQA04piEbKVFkeUS1jcABgSBhsy0in6f+RacL9lF8vODwv75FPdXV1mjRp530627dv7xqD03kHVefn2QLOk08+qWOOOUaHHXaYjj/+eM2bN0/nnHOOHnjgAbW2tmqvvfbSfffdp7feeks/+9nPdM011+jll1/WhAkT9Mgjj2jPPfcM9otMI+DkSTIRY5AxAKCobd26VePGjdMDDzygtWvXqqWlpWvF9ba2nb0QuRa6HDt2rA4//HB99rOf1Qc/+EFFo1G5u2bMmKGDDz5YjzzyiPbbbz/Nnj1bp5xyio477ji1tbWprq5ONTU1WV833wg4eVIdj6q2kS4qABhOaqrKs95FVYxWrVqlP/zhD3r88cf1xz/+UWeddZZOPfVUSdIrr7yi8vJU3a2trW9r0elu1qxZevDBB7uOe+SRR9TY2KjVq1ervr5eVVWphQjuueceubuam5tVWVmpRCJRgK9wJwJOniTjMbqoAGCYKcZbwbN57LHHtGLFCv3kJz/RkiVL9MYbb2jJkiX66U9/Kkmqr6/X1KlTJUkNDQ1va9HpbvPmzVq8eLHuuOMOrVy5Uuecc44+9alPaf369brooou0aNEiSanw09TUpA0bNuikk07SBRdcoAULFhTka5UIOHmTTMS0qa457DIAAMjoyiuvVDwe1+23367Ro0drwYIFuvjii7tabS644IKudao2bNig+vpdV0w688wztWjRIu2xxx66+OKLtWjRoq7Bw8cff7wOOuigrmNra2tVX1+vmTNn6tvf/rY+9KEPSVLBQg4BJ0+q41G9sinT8lkAAITvwx/+sN73vvfpgAMO0I033qgDDzxQZ511Vtf+GTNmdH2+YsWKjCuB/+hHP9IJJ5ygD3/4w13BSJI2bdqkFStW6Fe/+pVeeOEFVVRUaNmyZV13bJ144om65ppr9NJLLwX4Fb4dASdPkvEY8+AAAIrW2WefLUnasmWLZsyYofPO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\n",
      "text/plain": [
       "<Figure size 648x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 648x504 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 648x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 648x504 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#网络构建、训练\n",
    "def main():\n",
    "    #学习率\n",
    "    lr = 1e-2\n",
    "    accs,losses = [], []\n",
    "    \n",
    "    #初始化参数\n",
    "    w1, b1 = tf.Variable(tf.random.normal([784, 256,], stddev=0.1)), tf.Variable(tf.zeros([256]))\n",
    "    w2, b2 = tf.Variable(tf.random.normal([256, 128,], stddev=0.1)), tf.Variable(tf.zeros([128]))\n",
    "    w3, b3 = tf.Variable(tf.random.normal([128, 10,], stddev=0.1)), tf.Variable(tf.zeros([10]))\n",
    "    \n",
    "    #开始训练\n",
    "    for step,(x, y) in enumerate(train_db):\n",
    "        \n",
    "        x = tf.reshape(x, (-1, 784))\n",
    "        \n",
    "        with tf.GradientTape() as tape:\n",
    "            #layer1\n",
    "            h1 = x @w1 + b1\n",
    "            h1 = tf.nn.relu(h1)\n",
    "            \n",
    "            #layer2\n",
    "            h2 = h1@w2 + b2\n",
    "            h2 = tf.nn.relu(h2)\n",
    "            \n",
    "            #layer3\n",
    "            out = h2@w3 + b3\n",
    "            \n",
    "            #计算损失值\n",
    "            loss = tf.square(y-out)\n",
    "            loss = tf.reduce_mean(loss)\n",
    "        \n",
    "        #自动梯度计算,更新梯度\n",
    "        grads = tape.gradient(loss, [w1, b1, w2, b2, w3, b3])\n",
    "        for p,g in zip([w1, b1, w2, b2, w3, b3], grads):\n",
    "            p.assign_sub(lr * g)\n",
    "        \n",
    "        if step% 80 == 0:\n",
    "            print(step, 'loss:', float(loss))\n",
    "            losses.append(float(loss))\n",
    "        \n",
    "        if step% 80 == 0:\n",
    "            total, total_correct = 0., 0\n",
    "            \n",
    "            for x, y in test_db:\n",
    "                # layer1.\n",
    "                h1 = x @ w1 + b1\n",
    "                h1 = tf.nn.relu(h1)\n",
    "                # layer2\n",
    "                h2 = h1 @ w2 + b2\n",
    "                h2 = tf.nn.relu(h2)\n",
    "                # output\n",
    "                out = h2 @ w3 + b3\n",
    "                # [b, 10] => [b]\n",
    "                pred = tf.argmax(out,axis=1)\n",
    "                \n",
    "                y = tf.argmax(y, axis=1)\n",
    "                \n",
    "                correct = tf.equal(pred, y)\n",
    "                \n",
    "                total_correct += tf.reduce_sum(tf.cast(correct, dtype=tf.int32)).numpy()\n",
    "                total +=x.shape[0]\n",
    "                \n",
    "            print(step, 'Evaluate Acc:', total_correct/total)\n",
    "            \n",
    "            accs.append(total_correct/total)\n",
    "    \n",
    "    plt.figure()\n",
    "    x = [i*80 for i in range(len(losses))]\n",
    "    plt.plot(x, losses, color='C0',marker='s', label='训练')\n",
    "    plt.ylabel('MSE')\n",
    "    plt.xlabel('Step')\n",
    "    plt.legend()\n",
    "    plt.show()\n",
    "    plt.savefig('train.svg')\n",
    "    \n",
    "    plt.figure()\n",
    "    plt.plot(x, accs, color='C1', marker='s', label='测试')\n",
    "    plt.ylabel('准确率')\n",
    "    plt.xlabel('Step')\n",
    "    plt.legend()\n",
    "    plt.show()\n",
    "    plt.savefig('test.svg')\n",
    "\n",
    "\n",
    "main()\n",
    "                \n",
    "                \n",
    "        \n",
    "        \n",
    "            \n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 张量实现全连接层"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = tf.random.normal([2,784])\n",
    "w1 = tf.Variable(tf.random.truncated_normal([784, 256], stddev=0.1))\n",
    "b1 = tf.Variable(tf.zeros([256]))\n",
    "o1 = tf.matmul(x,w1) + b1  #线性变换\n",
    "ol = tf.nn.relu(o1)   #激活函数\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(2, 256), dtype=float32, numpy=\n",
       "array([[ 1.66077113e+00, -1.86003232e+00, -1.53317666e+00,\n",
       "        -3.19478750e-01, -1.29311919e-01, -3.40057760e-01,\n",
       "         4.46489048e+00, -1.22464752e+00, -2.11449146e+00,\n",
       "        -1.65599656e+00,  3.46822476e+00,  2.10421324e-01,\n",
       "         1.53349209e+00, -7.83275425e-01,  1.97873235e-01,\n",
       "         2.83096254e-01, -9.29446101e-01,  2.68605328e+00,\n",
       "         6.34176016e-01, -5.29628992e-01, -3.39454055e-01,\n",
       "        -4.33160496e+00,  1.07409227e+00, -1.73881578e+00,\n",
       "        -2.85196829e+00,  1.27540827e+00, -5.82461166e+00,\n",
       "        -1.17820525e+00, -3.47908139e-02,  1.39158642e+00,\n",
       "        -1.92076993e+00, -8.58874500e-01, -7.07396686e-01,\n",
       "         1.65946031e+00,  3.13852167e+00,  3.21059406e-01,\n",
       "         8.29769611e-01,  7.71091163e-01, -2.38135052e+00,\n",
       "         3.69051695e+00,  4.92679977e+00, -1.40940666e+00,\n",
       "         3.58951831e+00,  1.07293892e+00,  3.27555990e+00,\n",
       "         3.09647298e+00, -3.57507229e-01,  3.44764614e+00,\n",
       "         1.71911538e+00,  9.67624187e-01,  3.87289786e+00,\n",
       "        -3.16409826e-01, -2.31639028e-01,  2.49719238e+00,\n",
       "        -1.48749542e+00,  2.03462839e+00, -7.55140424e-01,\n",
       "        -1.02876163e+00,  5.70695734e+00,  2.42367077e+00,\n",
       "        -4.85027075e-01,  2.93037963e+00,  2.86991692e+00,\n",
       "        -5.39874554e+00, -4.80518627e+00,  2.88004827e+00,\n",
       "        -5.79620600e-02,  4.40441132e+00, -3.85925388e+00,\n",
       "        -1.96629333e+00, -2.84798479e+00, -4.39147854e+00,\n",
       "         2.12907791e-03, -3.01135182e-01,  3.09879482e-01,\n",
       "        -1.56545609e-01,  2.87591171e+00, -1.90148664e+00,\n",
       "        -3.92138028e+00,  4.88330078e+00,  1.55597806e+00,\n",
       "        -6.34986401e-01, -5.66295266e-01,  3.71802092e+00,\n",
       "         7.73397684e-02, -2.30871010e+00,  4.62615132e-01,\n",
       "        -2.31633854e+00,  3.60222161e-02, -2.23060083e+00,\n",
       "        -2.32522082e+00, -2.33970928e+00,  4.30737305e+00,\n",
       "        -2.65810490e-01,  4.80540991e-02,  2.12847257e+00,\n",
       "         1.73673797e+00, -2.28325129e+00, -1.34069061e+00,\n",
       "        -4.02650386e-01, -3.43471003e+00, -1.00296840e-01,\n",
       "        -1.66867161e+00,  1.73594296e+00,  9.62552488e-01,\n",
       "         1.41505301e-01,  1.32441425e+00, -4.43904608e-01,\n",
       "         2.69149661e+00, -2.67269254e+00,  3.64179516e+00,\n",
       "        -2.79093862e+00, -2.35688496e+00,  1.05331194e+00,\n",
       "        -3.14742136e+00,  1.38934493e+00, -1.71238947e+00,\n",
       "        -2.31266999e+00, -2.39323473e+00,  4.90890408e+00,\n",
       "         6.65573502e+00,  5.16808271e-01,  5.26267171e-01,\n",
       "         2.05370212e+00, -1.01029766e+00, -1.76397848e+00,\n",
       "         9.97827649e-01, -3.10650873e+00, -2.39271617e+00,\n",
       "        -1.08938563e+00,  2.34414530e+00,  1.47623241e-01,\n",
       "        -4.73247528e-01, -5.43804646e-01, -2.68398571e+00,\n",
       "        -1.64621460e+00, -7.11152673e-01, -3.96277130e-01,\n",
       "        -1.09111118e+00, -2.20929003e+00,  4.32082558e+00,\n",
       "        -2.10172176e+00, -4.03482056e+00,  4.22242832e+00,\n",
       "         4.10984707e+00, -2.30055642e+00, -1.95632529e+00,\n",
       "         2.04150581e+00, -4.94483471e-01,  1.31831193e+00,\n",
       "        -3.13947463e+00, -1.74424505e+00, -3.09921932e+00,\n",
       "         6.73096955e-01,  1.31254935e+00,  1.36543751e-01,\n",
       "         1.23014045e+00,  3.05779934e-01, -3.27732182e+00,\n",
       "         1.40269411e+00,  3.06427836e-01, -9.53605533e-01,\n",
       "         9.26520884e-01, -2.83429146e+00,  6.34892762e-01,\n",
       "        -2.57418227e+00, -8.05696249e-02,  4.48949873e-01,\n",
       "        -5.32852173e-01,  1.04637241e+00,  1.03229642e+00,\n",
       "        -2.48267984e+00,  4.03641224e-01, -6.75283432e-01,\n",
       "         2.02817154e+00,  6.38876247e+00,  6.90046835e+00,\n",
       "        -1.05637288e+00,  1.29221904e+00, -1.54091311e+00,\n",
       "        -1.49966502e+00, -8.04692686e-01, -1.00306559e+00,\n",
       "        -2.88422370e+00,  5.37196398e-01,  2.14010906e+00,\n",
       "         5.01521873e+00,  3.15966082e+00,  5.72016239e-02,\n",
       "         2.37652802e+00,  2.87409806e+00,  5.53972244e-01,\n",
       "        -1.28884232e+00, -1.82863784e+00, -4.11461782e+00,\n",
       "        -1.02372932e+00, -6.60886765e-01,  4.62265205e+00,\n",
       "         1.92486668e+00,  4.22572184e+00, -2.28569531e+00,\n",
       "        -4.18494606e+00, -2.17954850e+00,  5.02144051e+00,\n",
       "        -3.65332532e+00,  5.11213255e+00,  4.54634428e-01,\n",
       "        -5.66448069e+00,  9.66643155e-01,  6.83892190e-01,\n",
       "        -8.59564662e-01, -5.50844073e-01, -2.84044290e+00,\n",
       "         1.05552065e+00,  5.97160578e-01, -3.75868082e-02,\n",
       "         7.80701280e-01, -1.98287010e+00,  1.30613315e+00,\n",
       "        -2.46810246e+00,  3.05551744e+00, -1.26943183e+00,\n",
       "         3.11235619e+00,  3.10409546e+00,  9.84899342e-01,\n",
       "         3.75938439e+00, -3.56219769e+00,  1.93605101e+00,\n",
       "         1.33495378e+00,  5.80434704e+00, -7.93984354e-01,\n",
       "        -1.46706748e+00, -4.88047123e-01, -2.87278891e-01,\n",
       "         6.91248417e-01, -2.61751628e+00,  7.29763627e-01,\n",
       "         2.58211374e+00,  2.53534746e+00,  5.74301481e-02,\n",
       "         2.84058905e+00, -1.60420334e+00,  9.53588486e-01,\n",
       "         1.57603192e+00, -6.79575264e-01,  1.46684229e+00,\n",
       "        -6.05493784e-02,  1.83815408e+00, -7.66947031e-01,\n",
       "        -1.46898139e+00, -1.19323230e+00,  1.15885377e-01,\n",
       "        -7.29393780e-01, -2.97215223e-01, -2.45957518e+00,\n",
       "         2.78867102e+00],\n",
       "       [-2.43203497e+00,  2.91607523e+00, -9.69201028e-01,\n",
       "         6.44550920e-01,  1.26388240e+00,  2.45700741e+00,\n",
       "        -2.91199017e+00, -2.89120412e+00, -5.41880417e+00,\n",
       "         1.54417181e+00,  4.09171224e-01, -5.19963562e-01,\n",
       "         2.94421220e+00,  2.09924269e+00, -2.83698916e+00,\n",
       "        -1.02538896e+00, -2.40481877e+00, -1.29087532e+00,\n",
       "         1.04904389e+00, -3.12675571e+00, -4.69409657e+00,\n",
       "         1.26871288e-01, -2.84408903e+00, -3.58725476e+00,\n",
       "        -5.20753574e+00,  1.27039981e+00,  9.83113110e-01,\n",
       "         1.29373491e+00,  4.67591524e+00, -5.51021159e-01,\n",
       "         4.22677803e+00,  1.82930064e+00, -6.81768656e-01,\n",
       "         6.89505994e-01, -2.96948242e+00, -2.08869171e+00,\n",
       "         3.92034674e+00, -2.34379721e+00,  1.58822608e+00,\n",
       "        -1.37235928e+00,  2.19810271e+00, -8.04547310e-01,\n",
       "         1.83976173e-01,  3.41826200e+00, -2.95355177e+00,\n",
       "        -5.13880491e-01, -2.02983880e+00,  2.40852594e+00,\n",
       "         1.49498165e+00, -3.24251294e+00,  1.44105697e+00,\n",
       "         2.05995798e+00,  3.30747938e+00,  2.33210325e-01,\n",
       "        -7.02244401e-01,  2.16353118e-01,  8.62994194e-01,\n",
       "        -3.85479593e+00, -1.50922680e+00,  3.50787044e+00,\n",
       "        -3.21957397e+00,  1.38807809e+00,  6.73750162e-01,\n",
       "        -2.51824737e-01, -6.35901034e-01,  1.71298885e+00,\n",
       "        -5.91976762e-01,  5.86482644e-01,  4.51939964e+00,\n",
       "        -2.44577765e+00,  2.59764934e+00,  3.55988073e+00,\n",
       "         1.09813130e+00,  1.08338261e+00,  1.67278337e+00,\n",
       "         2.04862595e+00,  3.10154200e+00, -3.17331076e+00,\n",
       "         2.15991187e+00, -2.44535613e+00,  7.45854187e+00,\n",
       "        -9.74245787e-01,  1.88043773e+00,  8.68425131e-01,\n",
       "        -3.59843016e+00,  2.27095246e-01, -4.93416131e-01,\n",
       "         3.09708893e-01, -5.06036758e-01, -9.83309627e-01,\n",
       "        -1.03463304e+00,  1.38104177e+00, -1.54590786e-01,\n",
       "        -3.20733166e+00,  5.11626482e-01, -3.28156662e+00,\n",
       "        -5.51445723e-01, -9.50466633e-01, -2.11906195e+00,\n",
       "         2.45377469e+00,  1.36773109e+00,  1.99023485e-02,\n",
       "         4.90194082e+00, -3.04483366e+00, -1.64392269e+00,\n",
       "         1.56734562e+00, -1.80451703e+00, -2.55801725e+00,\n",
       "        -3.16246569e-01, -3.95820355e+00, -2.65706158e+00,\n",
       "         2.79312229e+00,  2.16026187e+00, -1.96109474e-01,\n",
       "         2.83230472e+00,  3.27639532e+00,  2.31749940e+00,\n",
       "         6.49909437e-01, -1.91550124e+00, -2.18545628e+00,\n",
       "         2.62710094e+00,  4.74885130e+00, -5.69218874e-01,\n",
       "        -2.98900414e+00,  6.25235319e-01, -1.90480232e-01,\n",
       "        -2.00573742e-01, -3.38759160e+00,  1.88359129e+00,\n",
       "         2.02144051e+00, -1.88010466e+00, -8.27391505e-01,\n",
       "         1.29804492e+00,  1.73856974e+00,  2.38832855e+00,\n",
       "        -9.70816374e-01,  3.12313747e+00, -1.71199512e+00,\n",
       "         1.07210100e+00,  7.30408072e-01,  2.39868116e+00,\n",
       "         1.52507603e+00,  2.49537086e+00,  2.18585277e+00,\n",
       "        -1.55460894e+00, -2.19587016e+00,  9.20554459e-01,\n",
       "        -1.29937977e-01,  1.50692809e+00,  3.69800091e+00,\n",
       "         1.45717263e-01, -4.98033881e-01, -3.18967462e+00,\n",
       "         1.51620030e+00, -2.02881312e+00,  1.72440660e+00,\n",
       "         2.15100241e+00,  1.55204558e+00,  1.20513332e+00,\n",
       "         3.83631301e+00, -1.40541041e+00,  3.04235220e-02,\n",
       "         5.92335606e+00, -1.04780138e-01, -3.01557541e+00,\n",
       "         2.37933207e+00,  2.32166648e+00, -4.57482529e+00,\n",
       "         1.95706367e+00,  3.06326532e+00, -2.84050798e+00,\n",
       "         2.53912473e+00, -2.04124236e+00, -1.90518570e+00,\n",
       "         5.75077772e+00,  2.81394196e+00, -7.94026673e-01,\n",
       "        -2.61348271e+00, -5.23265743e+00, -5.07183433e-01,\n",
       "        -1.32367134e+00, -2.28692436e+00,  1.22260761e+00,\n",
       "         4.94571090e-01,  2.73470497e+00, -1.37796485e+00,\n",
       "         5.59905529e-01,  1.30055225e+00, -2.27725673e+00,\n",
       "         2.12806153e+00,  1.67401206e+00, -2.96110249e+00,\n",
       "        -1.65101254e+00, -2.45001125e+00,  3.06476641e+00,\n",
       "         7.55311489e-01,  1.13402534e+00,  3.21963000e+00,\n",
       "        -1.60681069e+00, -2.76350403e+00, -1.78274751e+00,\n",
       "        -4.91278172e-01, -3.36227512e+00, -1.67575502e+00,\n",
       "        -9.16032791e-02, -7.60142684e-01, -1.12668371e+00,\n",
       "         5.76259947e+00, -1.25451803e-01,  1.04082346e-01,\n",
       "        -4.73071194e+00, -5.33220387e+00, -6.12008572e-01,\n",
       "         1.19613588e-01, -3.77060485e+00,  3.31868792e+00,\n",
       "        -1.43700016e+00, -3.57761669e+00, -1.48130763e+00,\n",
       "         1.01431382e+00,  2.51394749e+00, -3.98653746e+00,\n",
       "        -1.46231151e+00,  1.13470709e+00,  1.08281887e+00,\n",
       "         2.47405100e+00,  7.35157967e-01, -2.21638012e+00,\n",
       "        -1.22260535e+00, -2.30794001e+00, -3.34295487e+00,\n",
       "         1.61434698e+00, -3.19706619e-01, -4.40549910e-01,\n",
       "        -1.40609217e+00, -1.94544530e+00, -2.08892107e-01,\n",
       "        -3.59818745e+00,  3.16525936e+00, -9.88482952e-01,\n",
       "        -3.08303237e+00,  1.46193814e+00,  1.90304172e+00,\n",
       "        -3.14414358e+00, -4.89556694e+00,  6.54371619e-01,\n",
       "        -1.82096386e+00,  3.25459242e-02, -2.00406194e+00,\n",
       "        -1.23409569e+00, -9.35964108e-01,  2.03238487e+00,\n",
       "         7.70808458e-01, -1.27753472e+00, -6.81850791e-01,\n",
       "         2.82753873e+00]], dtype=float32)>"
      ]
     },
     "execution_count": 185,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "o1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 层方式实现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 187,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(4, 512), dtype=float32, numpy=\n",
       "array([[0.        , 0.        , 0.        , ..., 0.93714595, 0.7309656 ,\n",
       "        0.23735589],\n",
       "       [0.        , 0.4644723 , 1.1407975 , ..., 1.1354308 , 2.0767906 ,\n",
       "        0.        ],\n",
       "       [1.2875252 , 0.90635765, 0.        , ..., 0.8209481 , 0.15816602,\n",
       "        0.        ],\n",
       "       [0.        , 1.479631  , 0.62560916, ..., 0.        , 0.        ,\n",
       "        1.377309  ]], dtype=float32)>"
      ]
     },
     "execution_count": 187,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = tf.random.normal([4,28 * 28])\n",
    "\n",
    "from tensorflow.keras import layers\n",
    "# 创建全连接层，指定输出节点数和激活函数\n",
    "fc = layers.Dense(512, activation=tf.nn.relu)\n",
    "# 通过 fc 类实例完成一次全连接层的计算，返回输出张量\n",
    "h1 = fc(x)\n",
    "h1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 188,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Variable 'dense_1/bias:0' shape=(512,) dtype=float32, numpy=\n",
       "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0.], dtype=float32)>"
      ]
     },
     "execution_count": 188,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fc.bias # 获取 Dense 类的偏置向量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 189,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<tf.Variable 'dense_1/kernel:0' shape=(784, 512) dtype=float32, numpy=\n",
       " array([[ 0.0363564 , -0.01118848, -0.05210093, ..., -0.04787613,\n",
       "          0.01228289, -0.01599908],\n",
       "        [ 0.045816  ,  0.04982886, -0.05999777, ..., -0.01918665,\n",
       "         -0.04819283, -0.06408147],\n",
       "        [-0.02029225,  0.01921741, -0.04732015, ..., -0.06689113,\n",
       "          0.04208609, -0.05967102],\n",
       "        ...,\n",
       "        [ 0.06335047, -0.05159919, -0.05347785, ...,  0.01838107,\n",
       "         -0.06100696,  0.01463623],\n",
       "        [-0.00130536, -0.06449351, -0.05899915, ..., -0.06125018,\n",
       "         -0.0561741 , -0.06350078],\n",
       "        [-0.00544361, -0.02639125, -0.0414969 , ..., -0.0152698 ,\n",
       "          0.06563844,  0.03386212]], dtype=float32)>,\n",
       " <tf.Variable 'dense_1/bias:0' shape=(512,) dtype=float32, numpy=\n",
       " array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0.], dtype=float32)>]"
      ]
     },
     "execution_count": 189,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    " fc.trainable_variables # 返回待优化参数列表"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 神经网络"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 190,
   "metadata": {},
   "outputs": [],
   "source": [
    "#张量实现神经网络\n",
    "# 隐藏层 1 张量\n",
    "w1 = tf.Variable(tf.random.truncated_normal([784, 256], stddev=0.1))\n",
    "b1 = tf.Variable(tf.zeros([256]))\n",
    "# 隐藏层 2 张量\n",
    "w2 = tf.Variable(tf.random.truncated_normal([256, 128], stddev=0.1))\n",
    "b2 = tf.Variable(tf.zeros([128]))\n",
    "# 隐藏层 3 张量\n",
    "w3 = tf.Variable(tf.random.truncated_normal([128, 64], stddev=0.1))\n",
    "b3 = tf.Variable(tf.zeros([64]))\n",
    "# 输出层张量\n",
    "w4 = tf.Variable(tf.random.truncated_normal([64, 10], stddev=0.1))\n",
    "b4 = tf.Variable(tf.zeros([10]))\n",
    "\n",
    "with tf.GradientTape() as tape:\n",
    "    #d第一层\n",
    "    h1 = x@w1 + tf.broadcast_to(b1, [x.shape[0],256])\n",
    "    h1 = tf.nn.relu(h1)\n",
    "    \n",
    "    #第二层\n",
    "    h2 = h1@w2 + b2\n",
    "    h2 = tf.nn.relu(h2)\n",
    "    \n",
    "    #第三层\n",
    "    h3 = h2@w3 + b3\n",
    "    h3 = tf.nn.relu(h3)\n",
    "    \n",
    "    #输出层\n",
    "    out = h3@w4 + b4\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 191,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(4, 10), dtype=float32, numpy=\n",
       "array([[ 0.02499027, -1.675699  ,  0.48137116, -0.02813352,  0.79487675,\n",
       "        -0.43893227, -1.2043512 ,  0.36020675, -0.16500609, -0.98383915],\n",
       "       [ 1.344233  , -1.7432632 ,  0.25338006,  0.27087152, -0.09686673,\n",
       "        -0.12671907,  0.07273883,  0.67133176, -0.7569443 , -0.08355529],\n",
       "       [ 1.1519969 , -1.1914076 ,  0.20820758,  0.17167883,  0.19470444,\n",
       "        -0.5960219 , -1.1196816 ,  1.4208199 , -0.22457407, -1.1995603 ],\n",
       "       [ 0.6902189 , -0.9444031 ,  0.09046286, -0.38514036,  0.5622756 ,\n",
       "        -0.7547548 , -1.7078497 ,  0.7951606 , -0.5107659 , -0.9930035 ]],\n",
       "      dtype=float32)>"
      ]
     },
     "execution_count": 191,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 193,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(4, 10), dtype=float32, numpy=\n",
       "array([[-0.63210535,  0.13936497, -1.1634355 , -1.029775  , -0.19905826,\n",
       "         1.1970273 , -0.68070656,  0.48790887,  0.50618035,  0.8274178 ],\n",
       "       [-0.24819832, -0.2328665 , -0.48279318,  0.03381992, -0.46001384,\n",
       "         0.8670926 , -0.85950685,  0.50856066, -0.40900573,  0.28925252],\n",
       "       [-0.5262446 , -0.27274224, -0.18901111, -0.79680854,  0.3003177 ,\n",
       "         0.65898   ,  0.4359444 , -0.08291829, -0.43836394, -0.09049535],\n",
       "       [-0.81276125,  0.19081181, -0.481207  , -0.73821646, -0.4497089 ,\n",
       "         0.52780324, -0.4368137 ,  0.4315233 ,  0.26008138,  0.8297085 ]],\n",
       "      dtype=float32)>"
      ]
     },
     "execution_count": 193,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#层实现方式\n",
    "#方式一\n",
    "from tensorflow.keras import layers, Sequential\n",
    "\n",
    "fc1 = layers.Dense(256, activation=tf.nn.relu)\n",
    "fc2 = layers.Dense(128, activation=tf.nn.relu)\n",
    "fc3 = layers.Dense(64,  activation=tf.nn.relu)\n",
    "fc4 = layers.Dense(10,  activation=None)\n",
    "\n",
    "x = tf.random.normal([4, 28*28])\n",
    "h1 = fc1(x)\n",
    "h2 = fc2(h1)\n",
    "h3 = fc3(h2)\n",
    "out = fc4(h3)\n",
    "\n",
    "out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 197,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(4, 10), dtype=float32, numpy=\n",
       "array([[ 0.00380941, -0.05005564,  0.18880726,  0.11641009,  0.2910475 ,\n",
       "         0.10197514,  0.55973446,  0.28662318, -0.46009982, -0.12913507],\n",
       "       [ 0.06569375, -0.2607252 , -0.7678346 ,  0.32791   ,  0.63854647,\n",
       "         0.02280476, -0.28384742,  1.347271  ,  0.31908008,  0.39839068],\n",
       "       [ 1.0382092 ,  0.84635127,  0.02540648, -0.9275746 , -0.54268175,\n",
       "        -1.808312  , -0.5493367 ,  1.49669   ,  0.28331673,  0.04843125],\n",
       "       [ 1.6331226 , -0.6790501 ,  0.45494232, -0.6711553 ,  0.7076954 ,\n",
       "        -0.9483146 , -0.60963506,  0.8183592 ,  0.82460207,  0.10305471]],\n",
       "      dtype=float32)>"
      ]
     },
     "execution_count": 197,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#方式二\n",
    "from tensorflow.keras import layers,Sequential\n",
    "\n",
    "model = Sequential([\n",
    "    layers.Dense(256, activation=tf.nn.relu),\n",
    "    layers.Dense(128, activation=tf.nn.relu),\n",
    "    layers.Dense(64, activation=tf.nn.relu),\n",
    "    layers.Dense(10, activation=None),\n",
    "])\n",
    "\n",
    "out = model(x)\n",
    "out"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color='red'>129~141页，神经网络相关概念</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 汽车油耗预测实战"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们采用 Auto MPG 数据集，它记录了各种汽车效能指标与气缸数、重量、马力等其\n",
    "它因子的真实数据，查看数据集的前 5 项，如表 6.1 所示，其中每个字段的含义列在表\n",
    "6.2 中。除了产地的数字字段表示类别外，其他字段都是数值类型。对于产地地段，1 表示\n",
    "美国，2 表示欧洲，3 表示日本。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 204,
   "metadata": {},
   "outputs": [],
   "source": [
    "#读取数据\n",
    "dataset_path = keras.utils.get_file(\"auto-mpg.data\",\"http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "column_names = ['MPG','Cylinders','Displacement','Horsepower','Weight',\n",
    "'Acceleration', 'Model Year', 'Origin']\n",
    "raw_dataset = pd.read_csv(dataset_path, names=column_names,\n",
    "                         na_values=\"?\",comment='\\t',\n",
    "                         sep=' ', skipinitialspace=True)\n",
    "dataset = raw_dataset.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 207,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>MPG</th>\n",
       "      <th>Cylinders</th>\n",
       "      <th>Displacement</th>\n",
       "      <th>Horsepower</th>\n",
       "      <th>Weight</th>\n",
       "      <th>Acceleration</th>\n",
       "      <th>Model Year</th>\n",
       "      <th>Origin</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>18.0</td>\n",
       "      <td>8</td>\n",
       "      <td>307.0</td>\n",
       "      <td>130.0</td>\n",
       "      <td>3504.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>70</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>15.0</td>\n",
       "      <td>8</td>\n",
       "      <td>350.0</td>\n",
       "      <td>165.0</td>\n",
       "      <td>3693.0</td>\n",
       "      <td>11.5</td>\n",
       "      <td>70</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>18.0</td>\n",
       "      <td>8</td>\n",
       "      <td>318.0</td>\n",
       "      <td>150.0</td>\n",
       "      <td>3436.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>70</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>16.0</td>\n",
       "      <td>8</td>\n",
       "      <td>304.0</td>\n",
       "      <td>150.0</td>\n",
       "      <td>3433.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>70</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>17.0</td>\n",
       "      <td>8</td>\n",
       "      <td>302.0</td>\n",
       "      <td>140.0</td>\n",
       "      <td>3449.0</td>\n",
       "      <td>10.5</td>\n",
       "      <td>70</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    MPG  Cylinders  Displacement  Horsepower  Weight  Acceleration  \\\n",
       "0  18.0          8         307.0       130.0  3504.0          12.0   \n",
       "1  15.0          8         350.0       165.0  3693.0          11.5   \n",
       "2  18.0          8         318.0       150.0  3436.0          11.0   \n",
       "3  16.0          8         304.0       150.0  3433.0          12.0   \n",
       "4  17.0          8         302.0       140.0  3449.0          10.5   \n",
       "\n",
       "   Model Year  Origin  \n",
       "0          70       1  \n",
       "1          70       1  \n",
       "2          70       1  \n",
       "3          70       1  \n",
       "4          70       1  "
      ]
     },
     "execution_count": 207,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2020年11月2日    过拟合问题实战"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.5251 - accuracy: 0.7467\n",
      "Epoch 2/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3222 - accuracy: 0.8653\n",
      "Epoch 3/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.2672 - accuracy: 0.8773\n",
      "Epoch 4/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.2349 - accuracy: 0.8933\n",
      "Epoch 5/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.2049 - accuracy: 0.9107\n",
      "Epoch 6/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1785 - accuracy: 0.9333\n",
      "Epoch 7/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1677 - accuracy: 0.9387\n",
      "Epoch 8/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1600 - accuracy: 0.9453\n",
      "Epoch 9/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1686 - accuracy: 0.9387\n",
      "Epoch 10/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1473 - accuracy: 0.9467\n",
      "Epoch 11/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1368 - accuracy: 0.9467\n",
      "Epoch 12/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1472 - accuracy: 0.9413\n",
      "Epoch 13/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1455 - accuracy: 0.9453\n",
      "Epoch 14/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1526 - accuracy: 0.9427\n",
      "Epoch 15/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1526 - accuracy: 0.9440\n",
      "Epoch 16/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1536 - accuracy: 0.9413\n",
      "Epoch 17/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1523 - accuracy: 0.9440\n",
      "Epoch 18/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1393 - accuracy: 0.9467\n",
      "Epoch 19/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1388 - accuracy: 0.9467\n",
      "Epoch 20/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1349 - accuracy: 0.9480\n",
      "Epoch 21/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1356 - accuracy: 0.9507\n",
      "Epoch 22/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1377 - accuracy: 0.9493\n",
      "Epoch 23/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1330 - accuracy: 0.9493\n",
      "Epoch 24/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1345 - accuracy: 0.9493\n",
      "Epoch 25/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1371 - accuracy: 0.9413\n",
      "Epoch 26/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1408 - accuracy: 0.9427\n",
      "Epoch 27/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1457 - accuracy: 0.9493\n",
      "Epoch 28/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1355 - accuracy: 0.9493\n",
      "Epoch 29/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1369 - accuracy: 0.9480\n",
      "Epoch 30/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1362 - accuracy: 0.9480\n",
      "Epoch 31/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1314 - accuracy: 0.9480\n",
      "Epoch 32/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1392 - accuracy: 0.9440\n",
      "Epoch 33/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1357 - accuracy: 0.9480\n",
      "Epoch 34/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1320 - accuracy: 0.9507\n",
      "Epoch 35/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1279 - accuracy: 0.9467\n",
      "Epoch 36/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1309 - accuracy: 0.9493\n",
      "Epoch 37/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1307 - accuracy: 0.9480\n",
      "Epoch 38/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1336 - accuracy: 0.9467\n",
      "Epoch 39/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1458 - accuracy: 0.9440\n",
      "Epoch 40/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1355 - accuracy: 0.9467\n",
      "Epoch 41/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1296 - accuracy: 0.9453\n",
      "Epoch 42/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1310 - accuracy: 0.9480\n",
      "Epoch 43/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1351 - accuracy: 0.9480\n",
      "Epoch 44/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1320 - accuracy: 0.9453\n",
      "Epoch 45/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1340 - accuracy: 0.9493\n",
      "Epoch 46/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1389 - accuracy: 0.9467\n",
      "Epoch 47/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1359 - accuracy: 0.9467\n",
      "Epoch 48/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1267 - accuracy: 0.9507\n",
      "Epoch 49/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1251 - accuracy: 0.9507\n",
      "Epoch 50/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1268 - accuracy: 0.9520\n",
      "Epoch 51/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1276 - accuracy: 0.9507\n",
      "Epoch 52/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1330 - accuracy: 0.9467\n",
      "Epoch 53/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1316 - accuracy: 0.9440\n",
      "Epoch 54/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1297 - accuracy: 0.9467\n",
      "Epoch 55/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1323 - accuracy: 0.9467\n",
      "Epoch 56/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1284 - accuracy: 0.9493\n",
      "Epoch 57/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1288 - accuracy: 0.9453\n",
      "Epoch 58/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1218 - accuracy: 0.9440\n",
      "Epoch 59/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1363 - accuracy: 0.9440\n",
      "Epoch 60/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1281 - accuracy: 0.9507\n",
      "Epoch 61/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1302 - accuracy: 0.9387\n",
      "Epoch 62/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1272 - accuracy: 0.9493\n",
      "Epoch 63/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1248 - accuracy: 0.9520\n",
      "Epoch 64/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1244 - accuracy: 0.9520\n",
      "Epoch 65/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1236 - accuracy: 0.9547\n",
      "Epoch 66/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1229 - accuracy: 0.9533\n",
      "Epoch 67/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1207 - accuracy: 0.9520\n",
      "Epoch 68/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1338 - accuracy: 0.9453\n",
      "Epoch 69/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1335 - accuracy: 0.9453\n",
      "Epoch 70/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1294 - accuracy: 0.9427\n",
      "Epoch 71/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1265 - accuracy: 0.9493\n",
      "Epoch 72/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1201 - accuracy: 0.9493\n",
      "Epoch 73/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1206 - accuracy: 0.9547\n",
      "Epoch 74/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1207 - accuracy: 0.9520\n",
      "Epoch 75/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1323 - accuracy: 0.9493\n",
      "Epoch 76/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1250 - accuracy: 0.9480\n",
      "Epoch 77/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1235 - accuracy: 0.9533\n",
      "Epoch 78/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1229 - accuracy: 0.9467\n",
      "Epoch 79/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1339 - accuracy: 0.9440\n",
      "Epoch 80/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1228 - accuracy: 0.9480\n",
      "Epoch 81/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1248 - accuracy: 0.9480\n",
      "Epoch 82/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1240 - accuracy: 0.9453\n",
      "Epoch 83/500\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1224 - accuracy: 0.9547\n",
      "Epoch 84/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1229 - accuracy: 0.9440\n",
      "Epoch 85/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1307 - accuracy: 0.9440\n",
      "Epoch 86/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1311 - accuracy: 0.9480\n",
      "Epoch 87/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1195 - accuracy: 0.9520\n",
      "Epoch 88/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1173 - accuracy: 0.9507\n",
      "Epoch 89/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1202 - accuracy: 0.9480\n",
      "Epoch 90/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1191 - accuracy: 0.9493\n",
      "Epoch 91/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1248 - accuracy: 0.9467\n",
      "Epoch 92/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1213 - accuracy: 0.9533\n",
      "Epoch 93/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1290 - accuracy: 0.9480\n",
      "Epoch 94/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1257 - accuracy: 0.9467\n",
      "Epoch 95/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1192 - accuracy: 0.9493\n",
      "Epoch 96/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1219 - accuracy: 0.9453\n",
      "Epoch 97/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1260 - accuracy: 0.9427\n",
      "Epoch 98/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1202 - accuracy: 0.9507\n",
      "Epoch 99/500\n",
      "24/24 [==============================] - ETA: 0s - loss: 0.0863 - accuracy: 0.96 - 0s 1ms/step - loss: 0.1230 - accuracy: 0.9453\n",
      "Epoch 100/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1165 - accuracy: 0.9520\n",
      "Epoch 101/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1162 - accuracy: 0.9480\n",
      "Epoch 102/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1275 - accuracy: 0.9467\n",
      "Epoch 103/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1236 - accuracy: 0.9480\n",
      "Epoch 104/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1190 - accuracy: 0.9467\n",
      "Epoch 105/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1189 - accuracy: 0.9467\n",
      "Epoch 106/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1159 - accuracy: 0.9507\n",
      "Epoch 107/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1217 - accuracy: 0.9507\n",
      "Epoch 108/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1128 - accuracy: 0.9507\n",
      "Epoch 109/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1152 - accuracy: 0.9507\n",
      "Epoch 110/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1151 - accuracy: 0.9467\n",
      "Epoch 111/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1113 - accuracy: 0.9520\n",
      "Epoch 112/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1276 - accuracy: 0.9400\n",
      "Epoch 113/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1248 - accuracy: 0.9440\n",
      "Epoch 114/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1165 - accuracy: 0.9520\n",
      "Epoch 115/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1119 - accuracy: 0.9520\n",
      "Epoch 116/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1122 - accuracy: 0.9520\n",
      "Epoch 117/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1141 - accuracy: 0.9507\n",
      "Epoch 118/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1174 - accuracy: 0.9493\n",
      "Epoch 119/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1134 - accuracy: 0.9507\n",
      "Epoch 120/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1147 - accuracy: 0.9507\n",
      "Epoch 121/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1105 - accuracy: 0.9507\n",
      "Epoch 122/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1152 - accuracy: 0.9467\n",
      "Epoch 123/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1164 - accuracy: 0.9533\n",
      "Epoch 124/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1108 - accuracy: 0.9560\n",
      "Epoch 125/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1121 - accuracy: 0.9480\n",
      "Epoch 126/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1099 - accuracy: 0.9533\n",
      "Epoch 127/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1162 - accuracy: 0.9507\n",
      "Epoch 128/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1152 - accuracy: 0.9507\n",
      "Epoch 129/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1104 - accuracy: 0.9507\n",
      "Epoch 130/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1084 - accuracy: 0.9507\n",
      "Epoch 131/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1230 - accuracy: 0.9493\n",
      "Epoch 132/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1175 - accuracy: 0.9453\n",
      "Epoch 133/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1144 - accuracy: 0.9507\n",
      "Epoch 134/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1201 - accuracy: 0.9547\n",
      "Epoch 135/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1166 - accuracy: 0.9507\n",
      "Epoch 136/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1219 - accuracy: 0.9427\n",
      "Epoch 137/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1152 - accuracy: 0.9547\n",
      "Epoch 138/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1160 - accuracy: 0.9467\n",
      "Epoch 139/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1121 - accuracy: 0.9520\n",
      "Epoch 140/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1117 - accuracy: 0.9547\n",
      "Epoch 141/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1230 - accuracy: 0.9493\n",
      "Epoch 142/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1202 - accuracy: 0.9493\n",
      "Epoch 143/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1103 - accuracy: 0.9533\n",
      "Epoch 144/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1132 - accuracy: 0.9520\n",
      "Epoch 145/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1089 - accuracy: 0.9507\n",
      "Epoch 146/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1088 - accuracy: 0.9533\n",
      "Epoch 147/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1077 - accuracy: 0.9560\n",
      "Epoch 148/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1106 - accuracy: 0.9493\n",
      "Epoch 149/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1172 - accuracy: 0.9520\n",
      "Epoch 150/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1110 - accuracy: 0.9507\n",
      "Epoch 151/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1088 - accuracy: 0.9453\n",
      "Epoch 152/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1095 - accuracy: 0.9493\n",
      "Epoch 153/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1103 - accuracy: 0.9533\n",
      "Epoch 154/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1075 - accuracy: 0.9533\n",
      "Epoch 155/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1114 - accuracy: 0.9507\n",
      "Epoch 156/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1138 - accuracy: 0.9520\n",
      "Epoch 157/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1112 - accuracy: 0.9560\n",
      "Epoch 158/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1119 - accuracy: 0.9453\n",
      "Epoch 159/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1153 - accuracy: 0.9493\n",
      "Epoch 160/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1244 - accuracy: 0.9427\n",
      "Epoch 161/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1114 - accuracy: 0.9560\n",
      "Epoch 162/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1142 - accuracy: 0.9480\n",
      "Epoch 163/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1091 - accuracy: 0.9493\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 164/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1128 - accuracy: 0.9533\n",
      "Epoch 165/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1099 - accuracy: 0.9493\n",
      "Epoch 166/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1115 - accuracy: 0.9533\n",
      "Epoch 167/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1129 - accuracy: 0.9520\n",
      "Epoch 168/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1078 - accuracy: 0.9547\n",
      "Epoch 169/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1058 - accuracy: 0.9520\n",
      "Epoch 170/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1041 - accuracy: 0.9533\n",
      "Epoch 171/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1040 - accuracy: 0.9560\n",
      "Epoch 172/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1141 - accuracy: 0.9520\n",
      "Epoch 173/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1092 - accuracy: 0.9533\n",
      "Epoch 174/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1133 - accuracy: 0.9480\n",
      "Epoch 175/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1064 - accuracy: 0.9547\n",
      "Epoch 176/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1106 - accuracy: 0.9520\n",
      "Epoch 177/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1097 - accuracy: 0.9533\n",
      "Epoch 178/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1064 - accuracy: 0.9547\n",
      "Epoch 179/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1158 - accuracy: 0.9480\n",
      "Epoch 180/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1108 - accuracy: 0.9480\n",
      "Epoch 181/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1046 - accuracy: 0.9533\n",
      "Epoch 182/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1036 - accuracy: 0.9533\n",
      "Epoch 183/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1015 - accuracy: 0.9547\n",
      "Epoch 184/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1062 - accuracy: 0.9507\n",
      "Epoch 185/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1044 - accuracy: 0.9480\n",
      "Epoch 186/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1040 - accuracy: 0.9533\n",
      "Epoch 187/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1062 - accuracy: 0.9520\n",
      "Epoch 188/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1137 - accuracy: 0.9493\n",
      "Epoch 189/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1237 - accuracy: 0.9480\n",
      "Epoch 190/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1087 - accuracy: 0.9533\n",
      "Epoch 191/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1037 - accuracy: 0.9573\n",
      "Epoch 192/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1074 - accuracy: 0.9533\n",
      "Epoch 193/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1023 - accuracy: 0.9547\n",
      "Epoch 194/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1053 - accuracy: 0.9560\n",
      "Epoch 195/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1030 - accuracy: 0.9573\n",
      "Epoch 196/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1030 - accuracy: 0.9493\n",
      "Epoch 197/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1075 - accuracy: 0.9560\n",
      "Epoch 198/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1054 - accuracy: 0.9587\n",
      "Epoch 199/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1089 - accuracy: 0.9547\n",
      "Epoch 200/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1786 - accuracy: 0.9307\n",
      "Epoch 201/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1338 - accuracy: 0.9400\n",
      "Epoch 202/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1103 - accuracy: 0.9573\n",
      "Epoch 203/500\n",
      "24/24 [==============================] - ETA: 0s - loss: 0.0970 - accuracy: 0.96 - 0s 3ms/step - loss: 0.1076 - accuracy: 0.9560\n",
      "Epoch 204/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1151 - accuracy: 0.9480\n",
      "Epoch 205/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1254 - accuracy: 0.9520\n",
      "Epoch 206/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1086 - accuracy: 0.9547\n",
      "Epoch 207/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1086 - accuracy: 0.9533\n",
      "Epoch 208/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1033 - accuracy: 0.9587\n",
      "Epoch 209/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1060 - accuracy: 0.9547\n",
      "Epoch 210/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1094 - accuracy: 0.9520\n",
      "Epoch 211/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1087 - accuracy: 0.9533\n",
      "Epoch 212/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1108 - accuracy: 0.9507\n",
      "Epoch 213/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1034 - accuracy: 0.9547\n",
      "Epoch 214/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1047 - accuracy: 0.9547\n",
      "Epoch 215/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1006 - accuracy: 0.9547\n",
      "Epoch 216/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0988 - accuracy: 0.9520\n",
      "Epoch 217/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0971 - accuracy: 0.9600\n",
      "Epoch 218/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1073 - accuracy: 0.9533\n",
      "Epoch 219/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1019 - accuracy: 0.9600\n",
      "Epoch 220/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1074 - accuracy: 0.9573\n",
      "Epoch 221/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1016 - accuracy: 0.9613\n",
      "Epoch 222/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1008 - accuracy: 0.9560\n",
      "Epoch 223/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0985 - accuracy: 0.9587\n",
      "Epoch 224/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0980 - accuracy: 0.9600\n",
      "Epoch 225/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1027 - accuracy: 0.9600\n",
      "Epoch 226/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1000 - accuracy: 0.9547\n",
      "Epoch 227/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0988 - accuracy: 0.9573\n",
      "Epoch 228/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0988 - accuracy: 0.9640\n",
      "Epoch 229/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1009 - accuracy: 0.9573\n",
      "Epoch 230/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1017 - accuracy: 0.9520\n",
      "Epoch 231/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0982 - accuracy: 0.9573\n",
      "Epoch 232/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1101 - accuracy: 0.9480\n",
      "Epoch 233/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1028 - accuracy: 0.9573\n",
      "Epoch 234/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1041 - accuracy: 0.9573\n",
      "Epoch 235/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1031 - accuracy: 0.9573\n",
      "Epoch 236/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0992 - accuracy: 0.9613\n",
      "Epoch 237/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0991 - accuracy: 0.9587\n",
      "Epoch 238/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1065 - accuracy: 0.9627\n",
      "Epoch 239/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1025 - accuracy: 0.9613\n",
      "Epoch 240/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1075 - accuracy: 0.9573\n",
      "Epoch 241/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1031 - accuracy: 0.9600\n",
      "Epoch 242/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1018 - accuracy: 0.9560\n",
      "Epoch 243/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1002 - accuracy: 0.9627\n",
      "Epoch 244/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0970 - accuracy: 0.9587\n",
      "Epoch 245/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0961 - accuracy: 0.9627\n",
      "Epoch 246/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0948 - accuracy: 0.9640\n",
      "Epoch 247/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0956 - accuracy: 0.9600\n",
      "Epoch 248/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1032 - accuracy: 0.9547\n",
      "Epoch 249/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0992 - accuracy: 0.9640\n",
      "Epoch 250/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1157 - accuracy: 0.9547\n",
      "Epoch 251/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0997 - accuracy: 0.9613\n",
      "Epoch 252/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1005 - accuracy: 0.9547\n",
      "Epoch 253/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0987 - accuracy: 0.9600\n",
      "Epoch 254/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0992 - accuracy: 0.9613\n",
      "Epoch 255/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0956 - accuracy: 0.9573\n",
      "Epoch 256/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1027 - accuracy: 0.9547\n",
      "Epoch 257/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0951 - accuracy: 0.9600\n",
      "Epoch 258/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0978 - accuracy: 0.9627\n",
      "Epoch 259/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1033 - accuracy: 0.9587\n",
      "Epoch 260/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0985 - accuracy: 0.9600\n",
      "Epoch 261/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0955 - accuracy: 0.9573\n",
      "Epoch 262/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0951 - accuracy: 0.9600\n",
      "Epoch 263/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0975 - accuracy: 0.9573\n",
      "Epoch 264/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0974 - accuracy: 0.9573\n",
      "Epoch 265/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0960 - accuracy: 0.9600\n",
      "Epoch 266/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0962 - accuracy: 0.9613\n",
      "Epoch 267/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0995 - accuracy: 0.9560\n",
      "Epoch 268/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0967 - accuracy: 0.9613\n",
      "Epoch 269/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1028 - accuracy: 0.9587\n",
      "Epoch 270/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1065 - accuracy: 0.9600\n",
      "Epoch 271/500\n",
      "24/24 [==============================] - ETA: 0s - loss: 0.0913 - accuracy: 0.96 - 0s 3ms/step - loss: 0.0953 - accuracy: 0.9613\n",
      "Epoch 272/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0972 - accuracy: 0.9560\n",
      "Epoch 273/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0966 - accuracy: 0.9640\n",
      "Epoch 274/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1004 - accuracy: 0.9613\n",
      "Epoch 275/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1041 - accuracy: 0.9573\n",
      "Epoch 276/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0923 - accuracy: 0.9600\n",
      "Epoch 277/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0919 - accuracy: 0.9640\n",
      "Epoch 278/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1097 - accuracy: 0.9547\n",
      "Epoch 279/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1176 - accuracy: 0.9520\n",
      "Epoch 280/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1053 - accuracy: 0.9560\n",
      "Epoch 281/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0988 - accuracy: 0.9600\n",
      "Epoch 282/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0941 - accuracy: 0.9627\n",
      "Epoch 283/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0926 - accuracy: 0.9653\n",
      "Epoch 284/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0957 - accuracy: 0.9613\n",
      "Epoch 285/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0946 - accuracy: 0.9587\n",
      "Epoch 286/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0899 - accuracy: 0.9653\n",
      "Epoch 287/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0927 - accuracy: 0.9600\n",
      "Epoch 288/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0929 - accuracy: 0.9613\n",
      "Epoch 289/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0936 - accuracy: 0.9600\n",
      "Epoch 290/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0949 - accuracy: 0.9613\n",
      "Epoch 291/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0892 - accuracy: 0.9627\n",
      "Epoch 292/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0959 - accuracy: 0.9600\n",
      "Epoch 293/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0938 - accuracy: 0.9587\n",
      "Epoch 294/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0948 - accuracy: 0.9627\n",
      "Epoch 295/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0920 - accuracy: 0.9587\n",
      "Epoch 296/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0902 - accuracy: 0.9680\n",
      "Epoch 297/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0935 - accuracy: 0.9600\n",
      "Epoch 298/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0980 - accuracy: 0.9613\n",
      "Epoch 299/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0936 - accuracy: 0.9627\n",
      "Epoch 300/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0928 - accuracy: 0.9600\n",
      "Epoch 301/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0898 - accuracy: 0.9600\n",
      "Epoch 302/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0909 - accuracy: 0.9613\n",
      "Epoch 303/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0908 - accuracy: 0.9613\n",
      "Epoch 304/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0882 - accuracy: 0.9667\n",
      "Epoch 305/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0958 - accuracy: 0.9600\n",
      "Epoch 306/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0936 - accuracy: 0.9613\n",
      "Epoch 307/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1011 - accuracy: 0.9627\n",
      "Epoch 308/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1034 - accuracy: 0.9627\n",
      "Epoch 309/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0940 - accuracy: 0.9587\n",
      "Epoch 310/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0920 - accuracy: 0.9640\n",
      "Epoch 311/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0885 - accuracy: 0.9627\n",
      "Epoch 312/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0901 - accuracy: 0.9640\n",
      "Epoch 313/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0868 - accuracy: 0.9640\n",
      "Epoch 314/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0854 - accuracy: 0.9667\n",
      "Epoch 315/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0981 - accuracy: 0.9520\n",
      "Epoch 316/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0928 - accuracy: 0.9613\n",
      "Epoch 317/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0924 - accuracy: 0.9640\n",
      "Epoch 318/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0954 - accuracy: 0.9573\n",
      "Epoch 319/500\n",
      "24/24 [==============================] - ETA: 0s - loss: 0.0986 - accuracy: 0.96 - 0s 3ms/step - loss: 0.0906 - accuracy: 0.9667\n",
      "Epoch 320/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0863 - accuracy: 0.9627\n",
      "Epoch 321/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0878 - accuracy: 0.9653\n",
      "Epoch 322/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0891 - accuracy: 0.9627\n",
      "Epoch 323/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1029 - accuracy: 0.9573\n",
      "Epoch 324/500\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0915 - accuracy: 0.9640\n",
      "Epoch 325/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0930 - accuracy: 0.9627\n",
      "Epoch 326/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0937 - accuracy: 0.9640\n",
      "Epoch 327/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1021 - accuracy: 0.9560\n",
      "Epoch 328/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1012 - accuracy: 0.9573\n",
      "Epoch 329/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0911 - accuracy: 0.9627\n",
      "Epoch 330/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0883 - accuracy: 0.9627\n",
      "Epoch 331/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0893 - accuracy: 0.9613\n",
      "Epoch 332/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0924 - accuracy: 0.9627\n",
      "Epoch 333/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0872 - accuracy: 0.9613\n",
      "Epoch 334/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0888 - accuracy: 0.9613\n",
      "Epoch 335/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0901 - accuracy: 0.9627\n",
      "Epoch 336/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0891 - accuracy: 0.9627\n",
      "Epoch 337/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0926 - accuracy: 0.9640\n",
      "Epoch 338/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0872 - accuracy: 0.9640\n",
      "Epoch 339/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0869 - accuracy: 0.9693\n",
      "Epoch 340/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0879 - accuracy: 0.9640\n",
      "Epoch 341/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0875 - accuracy: 0.9680\n",
      "Epoch 342/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0851 - accuracy: 0.9613\n",
      "Epoch 343/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0875 - accuracy: 0.9693\n",
      "Epoch 344/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0871 - accuracy: 0.9640\n",
      "Epoch 345/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0876 - accuracy: 0.9667\n",
      "Epoch 346/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0863 - accuracy: 0.9667\n",
      "Epoch 347/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0813 - accuracy: 0.9693\n",
      "Epoch 348/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0925 - accuracy: 0.9653\n",
      "Epoch 349/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1052 - accuracy: 0.9587\n",
      "Epoch 350/500\n",
      "24/24 [==============================] - 0s 8ms/step - loss: 0.0974 - accuracy: 0.9613\n",
      "Epoch 351/500\n",
      "24/24 [==============================] - 0s 7ms/step - loss: 0.0972 - accuracy: 0.9600\n",
      "Epoch 352/500\n",
      "24/24 [==============================] - 0s 8ms/step - loss: 0.0842 - accuracy: 0.9667\n",
      "Epoch 353/500\n",
      "24/24 [==============================] - 0s 7ms/step - loss: 0.0849 - accuracy: 0.9653\n",
      "Epoch 354/500\n",
      "24/24 [==============================] - 0s 6ms/step - loss: 0.0845 - accuracy: 0.9680\n",
      "Epoch 355/500\n",
      "24/24 [==============================] - 0s 6ms/step - loss: 0.0849 - accuracy: 0.9627\n",
      "Epoch 356/500\n",
      "24/24 [==============================] - 0s 8ms/step - loss: 0.0831 - accuracy: 0.9640\n",
      "Epoch 357/500\n",
      "24/24 [==============================] - 0s 10ms/step - loss: 0.0838 - accuracy: 0.9680\n",
      "Epoch 358/500\n",
      "24/24 [==============================] - 0s 6ms/step - loss: 0.0866 - accuracy: 0.9667\n",
      "Epoch 359/500\n",
      "24/24 [==============================] - 0s 6ms/step - loss: 0.0819 - accuracy: 0.9640\n",
      "Epoch 360/500\n",
      "24/24 [==============================] - 0s 8ms/step - loss: 0.0820 - accuracy: 0.9680\n",
      "Epoch 361/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.0816 - accuracy: 0.9667\n",
      "Epoch 362/500\n",
      "24/24 [==============================] - 0s 6ms/step - loss: 0.0930 - accuracy: 0.9587\n",
      "Epoch 363/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.0882 - accuracy: 0.9640\n",
      "Epoch 364/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0872 - accuracy: 0.9627\n",
      "Epoch 365/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0870 - accuracy: 0.9667\n",
      "Epoch 366/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0862 - accuracy: 0.9653\n",
      "Epoch 367/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0821 - accuracy: 0.9667\n",
      "Epoch 368/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.0810 - accuracy: 0.9667\n",
      "Epoch 369/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.0854 - accuracy: 0.9613\n",
      "Epoch 370/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0823 - accuracy: 0.9680\n",
      "Epoch 371/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0857 - accuracy: 0.9667\n",
      "Epoch 372/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.0915 - accuracy: 0.9600\n",
      "Epoch 373/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0894 - accuracy: 0.9680\n",
      "Epoch 374/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0842 - accuracy: 0.9640\n",
      "Epoch 375/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0797 - accuracy: 0.9707\n",
      "Epoch 376/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0896 - accuracy: 0.9613\n",
      "Epoch 377/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0947 - accuracy: 0.9640\n",
      "Epoch 378/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0894 - accuracy: 0.9573\n",
      "Epoch 379/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0889 - accuracy: 0.9627\n",
      "Epoch 380/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.0849 - accuracy: 0.9693\n",
      "Epoch 381/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0797 - accuracy: 0.9680\n",
      "Epoch 382/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0810 - accuracy: 0.9653\n",
      "Epoch 383/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0836 - accuracy: 0.9667\n",
      "Epoch 384/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1092 - accuracy: 0.9627\n",
      "Epoch 385/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1008 - accuracy: 0.9600\n",
      "Epoch 386/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0902 - accuracy: 0.9627\n",
      "Epoch 387/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0840 - accuracy: 0.9680\n",
      "Epoch 388/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0812 - accuracy: 0.9680\n",
      "Epoch 389/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0775 - accuracy: 0.9733\n",
      "Epoch 390/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0832 - accuracy: 0.9667\n",
      "Epoch 391/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0820 - accuracy: 0.9680\n",
      "Epoch 392/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0771 - accuracy: 0.9693\n",
      "Epoch 393/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0791 - accuracy: 0.9653\n",
      "Epoch 394/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0768 - accuracy: 0.9747\n",
      "Epoch 395/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0906 - accuracy: 0.9640\n",
      "Epoch 396/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0796 - accuracy: 0.9707\n",
      "Epoch 397/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0821 - accuracy: 0.9680\n",
      "Epoch 398/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0801 - accuracy: 0.9667\n",
      "Epoch 399/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0841 - accuracy: 0.9667\n",
      "Epoch 400/500\n",
      "24/24 [==============================] - ETA: 0s - loss: 0.1109 - accuracy: 0.96 - 0s 2ms/step - loss: 0.0787 - accuracy: 0.9680\n",
      "Epoch 401/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0799 - accuracy: 0.9667\n",
      "Epoch 402/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0842 - accuracy: 0.9653\n",
      "Epoch 403/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0760 - accuracy: 0.9707\n",
      "Epoch 404/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.0755 - accuracy: 0.9707\n",
      "Epoch 405/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0881 - accuracy: 0.9613\n",
      "Epoch 406/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0924 - accuracy: 0.9627\n",
      "Epoch 407/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0818 - accuracy: 0.9707\n",
      "Epoch 408/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0776 - accuracy: 0.9720\n",
      "Epoch 409/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0823 - accuracy: 0.9587\n",
      "Epoch 410/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0784 - accuracy: 0.9707\n",
      "Epoch 411/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0757 - accuracy: 0.9707\n",
      "Epoch 412/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0807 - accuracy: 0.9667\n",
      "Epoch 413/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0810 - accuracy: 0.9667\n",
      "Epoch 414/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0811 - accuracy: 0.9693\n",
      "Epoch 415/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0810 - accuracy: 0.9680\n",
      "Epoch 416/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0826 - accuracy: 0.9667\n",
      "Epoch 417/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0847 - accuracy: 0.9640\n",
      "Epoch 418/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0890 - accuracy: 0.9613\n",
      "Epoch 419/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0757 - accuracy: 0.9667\n",
      "Epoch 420/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0839 - accuracy: 0.9667\n",
      "Epoch 421/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1037 - accuracy: 0.9573\n",
      "Epoch 422/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0937 - accuracy: 0.9627\n",
      "Epoch 423/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1041 - accuracy: 0.9600\n",
      "Epoch 424/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.0916 - accuracy: 0.9613\n",
      "Epoch 425/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0880 - accuracy: 0.9653\n",
      "Epoch 426/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0746 - accuracy: 0.9720\n",
      "Epoch 427/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0745 - accuracy: 0.9707\n",
      "Epoch 428/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0771 - accuracy: 0.9733\n",
      "Epoch 429/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0805 - accuracy: 0.9720\n",
      "Epoch 430/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0788 - accuracy: 0.9760\n",
      "Epoch 431/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0838 - accuracy: 0.9653\n",
      "Epoch 432/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0808 - accuracy: 0.9747\n",
      "Epoch 433/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0789 - accuracy: 0.9667\n",
      "Epoch 434/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0915 - accuracy: 0.9627\n",
      "Epoch 435/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0768 - accuracy: 0.9693\n",
      "Epoch 436/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0750 - accuracy: 0.9720\n",
      "Epoch 437/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0765 - accuracy: 0.9720\n",
      "Epoch 438/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0861 - accuracy: 0.9680\n",
      "Epoch 439/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0774 - accuracy: 0.9667\n",
      "Epoch 440/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0785 - accuracy: 0.9693\n",
      "Epoch 441/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0867 - accuracy: 0.9640\n",
      "Epoch 442/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0711 - accuracy: 0.9733\n",
      "Epoch 443/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0773 - accuracy: 0.9707\n",
      "Epoch 444/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0721 - accuracy: 0.9707\n",
      "Epoch 445/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0799 - accuracy: 0.9680\n",
      "Epoch 446/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0836 - accuracy: 0.9680\n",
      "Epoch 447/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0811 - accuracy: 0.9707\n",
      "Epoch 448/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0899 - accuracy: 0.9680\n",
      "Epoch 449/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0887 - accuracy: 0.9667\n",
      "Epoch 450/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0752 - accuracy: 0.9707\n",
      "Epoch 451/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0745 - accuracy: 0.9707\n",
      "Epoch 452/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0705 - accuracy: 0.9760\n",
      "Epoch 453/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0711 - accuracy: 0.9733\n",
      "Epoch 454/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0769 - accuracy: 0.9680\n",
      "Epoch 455/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0821 - accuracy: 0.9680\n",
      "Epoch 456/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0743 - accuracy: 0.9747\n",
      "Epoch 457/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0703 - accuracy: 0.9747\n",
      "Epoch 458/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0699 - accuracy: 0.9760\n",
      "Epoch 459/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0689 - accuracy: 0.9747\n",
      "Epoch 460/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0711 - accuracy: 0.9733\n",
      "Epoch 461/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0800 - accuracy: 0.9667\n",
      "Epoch 462/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0801 - accuracy: 0.9680\n",
      "Epoch 463/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0742 - accuracy: 0.9707\n",
      "Epoch 464/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0881 - accuracy: 0.9667\n",
      "Epoch 465/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1056 - accuracy: 0.9627\n",
      "Epoch 466/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0807 - accuracy: 0.9720\n",
      "Epoch 467/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0733 - accuracy: 0.9707\n",
      "Epoch 468/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0808 - accuracy: 0.9667\n",
      "Epoch 469/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0791 - accuracy: 0.9667\n",
      "Epoch 470/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0825 - accuracy: 0.9707\n",
      "Epoch 471/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0818 - accuracy: 0.9627\n",
      "Epoch 472/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0773 - accuracy: 0.9653\n",
      "Epoch 473/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0737 - accuracy: 0.9720\n",
      "Epoch 474/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0749 - accuracy: 0.9693\n",
      "Epoch 475/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0990 - accuracy: 0.9587\n",
      "Epoch 476/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0927 - accuracy: 0.9680\n",
      "Epoch 477/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0776 - accuracy: 0.9733\n",
      "Epoch 478/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0714 - accuracy: 0.9720\n",
      "Epoch 479/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0677 - accuracy: 0.9747\n",
      "Epoch 480/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0678 - accuracy: 0.9720\n",
      "Epoch 481/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0671 - accuracy: 0.9760\n",
      "Epoch 482/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0732 - accuracy: 0.9747\n",
      "Epoch 483/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0802 - accuracy: 0.9720\n",
      "Epoch 484/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0854 - accuracy: 0.9667\n",
      "Epoch 485/500\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0824 - accuracy: 0.9693\n",
      "Epoch 486/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1092 - accuracy: 0.9653\n",
      "Epoch 487/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0794 - accuracy: 0.9707\n",
      "Epoch 488/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0772 - accuracy: 0.9680\n",
      "Epoch 489/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0755 - accuracy: 0.9720\n",
      "Epoch 490/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0711 - accuracy: 0.9720\n",
      "Epoch 491/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0719 - accuracy: 0.9707\n",
      "Epoch 492/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0700 - accuracy: 0.9747\n",
      "Epoch 493/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0719 - accuracy: 0.9720\n",
      "Epoch 494/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0700 - accuracy: 0.9787\n",
      "Epoch 495/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0680 - accuracy: 0.9720\n",
      "Epoch 496/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0661 - accuracy: 0.9747\n",
      "Epoch 497/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0660 - accuracy: 0.9800\n",
      "Epoch 498/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0798 - accuracy: 0.9667\n",
      "Epoch 499/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0861 - accuracy: 0.9667\n",
      "Epoch 500/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.0938 - accuracy: 0.9613\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\anaconda\\lib\\site-packages\\ipykernel_launcher.py:45: UserWarning: The following kwargs were not used by contour: 'levals'\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.8858 - accuracy: 0.8253\n",
      "Epoch 2/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.5884 - accuracy: 0.8787\n",
      "Epoch 3/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4643 - accuracy: 0.8920\n",
      "Epoch 4/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3990 - accuracy: 0.8947\n",
      "Epoch 5/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3448 - accuracy: 0.9027\n",
      "Epoch 6/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3175 - accuracy: 0.9187\n",
      "Epoch 7/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.2895 - accuracy: 0.9280\n",
      "Epoch 8/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.2706 - accuracy: 0.9213\n",
      "Epoch 9/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.2576 - accuracy: 0.9373\n",
      "Epoch 10/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.2430 - accuracy: 0.9400\n",
      "Epoch 11/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.2290 - accuracy: 0.9387\n",
      "Epoch 12/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.2252 - accuracy: 0.9413\n",
      "Epoch 13/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.2134 - accuracy: 0.9400\n",
      "Epoch 14/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.2114 - accuracy: 0.9427\n",
      "Epoch 15/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.2156 - accuracy: 0.9467\n",
      "Epoch 16/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.2075 - accuracy: 0.9427\n",
      "Epoch 17/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.2007 - accuracy: 0.9480\n",
      "Epoch 18/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1958 - accuracy: 0.9440\n",
      "Epoch 19/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.2084 - accuracy: 0.9467\n",
      "Epoch 20/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1878 - accuracy: 0.9467\n",
      "Epoch 21/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1922 - accuracy: 0.9493\n",
      "Epoch 22/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.2014 - accuracy: 0.9440\n",
      "Epoch 23/500\n",
      "24/24 [==============================] - ETA: 0s - loss: 0.1783 - accuracy: 0.94 - 0s 3ms/step - loss: 0.1819 - accuracy: 0.9467\n",
      "Epoch 24/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1853 - accuracy: 0.9427\n",
      "Epoch 25/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1766 - accuracy: 0.9400\n",
      "Epoch 26/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1802 - accuracy: 0.9493\n",
      "Epoch 27/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1868 - accuracy: 0.9387\n",
      "Epoch 28/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1744 - accuracy: 0.9427\n",
      "Epoch 29/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1859 - accuracy: 0.9520\n",
      "Epoch 30/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1800 - accuracy: 0.9453\n",
      "Epoch 31/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.1870 - accuracy: 0.9440\n",
      "Epoch 32/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1740 - accuracy: 0.9507\n",
      "Epoch 33/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1740 - accuracy: 0.9453\n",
      "Epoch 34/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1628 - accuracy: 0.9493\n",
      "Epoch 35/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1680 - accuracy: 0.9467\n",
      "Epoch 36/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1645 - accuracy: 0.9467\n",
      "Epoch 37/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1654 - accuracy: 0.9480\n",
      "Epoch 38/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1736 - accuracy: 0.9440\n",
      "Epoch 39/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1707 - accuracy: 0.9427\n",
      "Epoch 40/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1668 - accuracy: 0.9467\n",
      "Epoch 41/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1733 - accuracy: 0.9427\n",
      "Epoch 42/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1692 - accuracy: 0.9480\n",
      "Epoch 43/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1657 - accuracy: 0.9467\n",
      "Epoch 44/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1688 - accuracy: 0.9440\n",
      "Epoch 45/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1631 - accuracy: 0.9427\n",
      "Epoch 46/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1665 - accuracy: 0.9427\n",
      "Epoch 47/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1701 - accuracy: 0.9360\n",
      "Epoch 48/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1783 - accuracy: 0.9413\n",
      "Epoch 49/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1817 - accuracy: 0.9387\n",
      "Epoch 50/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1714 - accuracy: 0.9387\n",
      "Epoch 51/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1702 - accuracy: 0.9413\n",
      "Epoch 52/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1617 - accuracy: 0.9453\n",
      "Epoch 53/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1753 - accuracy: 0.9453\n",
      "Epoch 54/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1573 - accuracy: 0.9493\n",
      "Epoch 55/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1605 - accuracy: 0.9480\n",
      "Epoch 56/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1682 - accuracy: 0.9413\n",
      "Epoch 57/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1665 - accuracy: 0.9440\n",
      "Epoch 58/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1634 - accuracy: 0.9480\n",
      "Epoch 59/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1559 - accuracy: 0.9493\n",
      "Epoch 60/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1548 - accuracy: 0.9467\n",
      "Epoch 61/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1574 - accuracy: 0.9467\n",
      "Epoch 62/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1601 - accuracy: 0.9480\n",
      "Epoch 63/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1554 - accuracy: 0.9480\n",
      "Epoch 64/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1553 - accuracy: 0.9480\n",
      "Epoch 65/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1615 - accuracy: 0.9480\n",
      "Epoch 66/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1617 - accuracy: 0.9440\n",
      "Epoch 67/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.1540 - accuracy: 0.9480\n",
      "Epoch 68/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1579 - accuracy: 0.9453\n",
      "Epoch 69/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1552 - accuracy: 0.9467\n",
      "Epoch 70/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1548 - accuracy: 0.9467\n",
      "Epoch 71/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1578 - accuracy: 0.9427\n",
      "Epoch 72/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1740 - accuracy: 0.9373\n",
      "Epoch 73/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1582 - accuracy: 0.9467\n",
      "Epoch 74/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1575 - accuracy: 0.9507\n",
      "Epoch 75/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1552 - accuracy: 0.9467\n",
      "Epoch 76/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1514 - accuracy: 0.9493\n",
      "Epoch 77/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1510 - accuracy: 0.9467\n",
      "Epoch 78/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1521 - accuracy: 0.9467\n",
      "Epoch 79/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1535 - accuracy: 0.9533\n",
      "Epoch 80/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1531 - accuracy: 0.9493\n",
      "Epoch 81/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1531 - accuracy: 0.9480\n",
      "Epoch 82/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1550 - accuracy: 0.9480\n",
      "Epoch 83/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1538 - accuracy: 0.9453\n",
      "Epoch 84/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1508 - accuracy: 0.9480\n",
      "Epoch 85/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1523 - accuracy: 0.9480\n",
      "Epoch 86/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1502 - accuracy: 0.9467\n",
      "Epoch 87/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1505 - accuracy: 0.9480\n",
      "Epoch 88/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1477 - accuracy: 0.9480\n",
      "Epoch 89/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1574 - accuracy: 0.9453\n",
      "Epoch 90/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1524 - accuracy: 0.9507\n",
      "Epoch 91/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1537 - accuracy: 0.9413\n",
      "Epoch 92/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1528 - accuracy: 0.9480\n",
      "Epoch 93/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1508 - accuracy: 0.9480\n",
      "Epoch 94/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1568 - accuracy: 0.9467\n",
      "Epoch 95/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1489 - accuracy: 0.9547\n",
      "Epoch 96/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1498 - accuracy: 0.9440\n",
      "Epoch 97/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1507 - accuracy: 0.9493\n",
      "Epoch 98/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1502 - accuracy: 0.9453\n",
      "Epoch 99/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1498 - accuracy: 0.9467\n",
      "Epoch 100/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1497 - accuracy: 0.9507\n",
      "Epoch 101/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1571 - accuracy: 0.9440\n",
      "Epoch 102/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1426 - accuracy: 0.9507\n",
      "Epoch 103/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1503 - accuracy: 0.9467\n",
      "Epoch 104/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1481 - accuracy: 0.9493\n",
      "Epoch 105/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1504 - accuracy: 0.9427\n",
      "Epoch 106/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1480 - accuracy: 0.9480\n",
      "Epoch 107/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1445 - accuracy: 0.9480\n",
      "Epoch 108/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1504 - accuracy: 0.9480\n",
      "Epoch 109/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1433 - accuracy: 0.9493\n",
      "Epoch 110/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.1457 - accuracy: 0.9507\n",
      "Epoch 111/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1458 - accuracy: 0.9533\n",
      "Epoch 112/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1440 - accuracy: 0.9480\n",
      "Epoch 113/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1433 - accuracy: 0.9493\n",
      "Epoch 114/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1465 - accuracy: 0.9507\n",
      "Epoch 115/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1498 - accuracy: 0.9453\n",
      "Epoch 116/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1448 - accuracy: 0.9467\n",
      "Epoch 117/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1453 - accuracy: 0.9480\n",
      "Epoch 118/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1452 - accuracy: 0.9440\n",
      "Epoch 119/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1483 - accuracy: 0.9520\n",
      "Epoch 120/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1482 - accuracy: 0.9440\n",
      "Epoch 121/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1458 - accuracy: 0.9440\n",
      "Epoch 122/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1582 - accuracy: 0.9453\n",
      "Epoch 123/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.1530 - accuracy: 0.9440\n",
      "Epoch 124/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1459 - accuracy: 0.9507\n",
      "Epoch 125/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1473 - accuracy: 0.9440\n",
      "Epoch 126/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1514 - accuracy: 0.9440\n",
      "Epoch 127/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1509 - accuracy: 0.9467\n",
      "Epoch 128/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1546 - accuracy: 0.9427\n",
      "Epoch 129/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1432 - accuracy: 0.9480\n",
      "Epoch 130/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1461 - accuracy: 0.9480\n",
      "Epoch 131/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1472 - accuracy: 0.9493\n",
      "Epoch 132/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1476 - accuracy: 0.9480\n",
      "Epoch 133/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1419 - accuracy: 0.9493\n",
      "Epoch 134/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1422 - accuracy: 0.9493\n",
      "Epoch 135/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1431 - accuracy: 0.9507\n",
      "Epoch 136/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1461 - accuracy: 0.9480\n",
      "Epoch 137/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1464 - accuracy: 0.9453\n",
      "Epoch 138/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1426 - accuracy: 0.9507\n",
      "Epoch 139/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1449 - accuracy: 0.9493\n",
      "Epoch 140/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1444 - accuracy: 0.9440\n",
      "Epoch 141/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1454 - accuracy: 0.9493\n",
      "Epoch 142/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1454 - accuracy: 0.9480\n",
      "Epoch 143/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1471 - accuracy: 0.9427\n",
      "Epoch 144/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1516 - accuracy: 0.9427\n",
      "Epoch 145/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1430 - accuracy: 0.9507\n",
      "Epoch 146/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1690 - accuracy: 0.9333\n",
      "Epoch 147/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1743 - accuracy: 0.9387\n",
      "Epoch 148/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1480 - accuracy: 0.9507\n",
      "Epoch 149/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1433 - accuracy: 0.9480\n",
      "Epoch 150/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1435 - accuracy: 0.9480\n",
      "Epoch 151/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1409 - accuracy: 0.9480\n",
      "Epoch 152/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1409 - accuracy: 0.9493\n",
      "Epoch 153/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1418 - accuracy: 0.9493\n",
      "Epoch 154/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1398 - accuracy: 0.9493\n",
      "Epoch 155/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1452 - accuracy: 0.9493\n",
      "Epoch 156/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1449 - accuracy: 0.9480\n",
      "Epoch 157/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1422 - accuracy: 0.9480\n",
      "Epoch 158/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1399 - accuracy: 0.9480\n",
      "Epoch 159/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1467 - accuracy: 0.9520\n",
      "Epoch 160/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1441 - accuracy: 0.9480\n",
      "Epoch 161/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1423 - accuracy: 0.9440\n",
      "Epoch 162/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1452 - accuracy: 0.9467\n",
      "Epoch 163/500\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1410 - accuracy: 0.9493\n",
      "Epoch 164/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1401 - accuracy: 0.9520\n",
      "Epoch 165/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1383 - accuracy: 0.9507\n",
      "Epoch 166/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1426 - accuracy: 0.9493\n",
      "Epoch 167/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1396 - accuracy: 0.9493\n",
      "Epoch 168/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1414 - accuracy: 0.9480\n",
      "Epoch 169/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1437 - accuracy: 0.9440\n",
      "Epoch 170/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1424 - accuracy: 0.9453\n",
      "Epoch 171/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1407 - accuracy: 0.9493\n",
      "Epoch 172/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1487 - accuracy: 0.9507\n",
      "Epoch 173/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1520 - accuracy: 0.9507\n",
      "Epoch 174/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1433 - accuracy: 0.9480\n",
      "Epoch 175/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1419 - accuracy: 0.9507\n",
      "Epoch 176/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1414 - accuracy: 0.9480\n",
      "Epoch 177/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1430 - accuracy: 0.9467\n",
      "Epoch 178/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1450 - accuracy: 0.9467\n",
      "Epoch 179/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1438 - accuracy: 0.9507\n",
      "Epoch 180/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1411 - accuracy: 0.9493\n",
      "Epoch 181/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1423 - accuracy: 0.9493\n",
      "Epoch 182/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1447 - accuracy: 0.9453\n",
      "Epoch 183/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1387 - accuracy: 0.9453\n",
      "Epoch 184/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1388 - accuracy: 0.9493\n",
      "Epoch 185/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1387 - accuracy: 0.9493\n",
      "Epoch 186/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1577 - accuracy: 0.9427\n",
      "Epoch 187/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1574 - accuracy: 0.9467\n",
      "Epoch 188/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1466 - accuracy: 0.9493\n",
      "Epoch 189/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1418 - accuracy: 0.9467\n",
      "Epoch 190/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1393 - accuracy: 0.9507\n",
      "Epoch 191/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1370 - accuracy: 0.9493\n",
      "Epoch 192/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1467 - accuracy: 0.9453\n",
      "Epoch 193/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1392 - accuracy: 0.9480\n",
      "Epoch 194/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1541 - accuracy: 0.9413\n",
      "Epoch 195/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1437 - accuracy: 0.9520\n",
      "Epoch 196/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1394 - accuracy: 0.9533\n",
      "Epoch 197/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1395 - accuracy: 0.9520\n",
      "Epoch 198/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1443 - accuracy: 0.9507\n",
      "Epoch 199/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1371 - accuracy: 0.9493\n",
      "Epoch 200/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1368 - accuracy: 0.9507\n",
      "Epoch 201/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1412 - accuracy: 0.9493\n",
      "Epoch 202/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1430 - accuracy: 0.9493\n",
      "Epoch 203/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1415 - accuracy: 0.9493\n",
      "Epoch 204/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1414 - accuracy: 0.9507\n",
      "Epoch 205/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1437 - accuracy: 0.9480\n",
      "Epoch 206/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1408 - accuracy: 0.9480\n",
      "Epoch 207/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1422 - accuracy: 0.9453\n",
      "Epoch 208/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1378 - accuracy: 0.9520\n",
      "Epoch 209/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1414 - accuracy: 0.9467\n",
      "Epoch 210/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1398 - accuracy: 0.9480\n",
      "Epoch 211/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1387 - accuracy: 0.9507\n",
      "Epoch 212/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1395 - accuracy: 0.9480\n",
      "Epoch 213/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1530 - accuracy: 0.9467\n",
      "Epoch 214/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1550 - accuracy: 0.9453\n",
      "Epoch 215/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1369 - accuracy: 0.9493\n",
      "Epoch 216/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1391 - accuracy: 0.9520\n",
      "Epoch 217/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1542 - accuracy: 0.9480\n",
      "Epoch 218/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1389 - accuracy: 0.9547\n",
      "Epoch 219/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1421 - accuracy: 0.9480\n",
      "Epoch 220/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1352 - accuracy: 0.9507\n",
      "Epoch 221/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1369 - accuracy: 0.9493\n",
      "Epoch 222/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1391 - accuracy: 0.9507\n",
      "Epoch 223/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1384 - accuracy: 0.9547\n",
      "Epoch 224/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1386 - accuracy: 0.9493\n",
      "Epoch 225/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1345 - accuracy: 0.9507\n",
      "Epoch 226/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1415 - accuracy: 0.9440\n",
      "Epoch 227/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1376 - accuracy: 0.9507\n",
      "Epoch 228/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1349 - accuracy: 0.9533\n",
      "Epoch 229/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1366 - accuracy: 0.9507\n",
      "Epoch 230/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1401 - accuracy: 0.9507\n",
      "Epoch 231/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1377 - accuracy: 0.9493\n",
      "Epoch 232/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1367 - accuracy: 0.9533\n",
      "Epoch 233/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1436 - accuracy: 0.9480\n",
      "Epoch 234/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1358 - accuracy: 0.9533\n",
      "Epoch 235/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1393 - accuracy: 0.9493\n",
      "Epoch 236/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1391 - accuracy: 0.9493\n",
      "Epoch 237/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1414 - accuracy: 0.9480\n",
      "Epoch 238/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1422 - accuracy: 0.9440\n",
      "Epoch 239/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1377 - accuracy: 0.9480\n",
      "Epoch 240/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1406 - accuracy: 0.9453\n",
      "Epoch 241/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1399 - accuracy: 0.9507\n",
      "Epoch 242/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1392 - accuracy: 0.9520\n",
      "Epoch 243/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1349 - accuracy: 0.9533\n",
      "Epoch 244/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1383 - accuracy: 0.9467\n",
      "Epoch 245/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1394 - accuracy: 0.9467\n",
      "Epoch 246/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1378 - accuracy: 0.9493\n",
      "Epoch 247/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1399 - accuracy: 0.9480\n",
      "Epoch 248/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1386 - accuracy: 0.9493\n",
      "Epoch 249/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1371 - accuracy: 0.9480\n",
      "Epoch 250/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1368 - accuracy: 0.9480\n",
      "Epoch 251/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1367 - accuracy: 0.9507\n",
      "Epoch 252/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1370 - accuracy: 0.9520\n",
      "Epoch 253/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1411 - accuracy: 0.9493\n",
      "Epoch 254/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1373 - accuracy: 0.9480\n",
      "Epoch 255/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1367 - accuracy: 0.9493\n",
      "Epoch 256/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1351 - accuracy: 0.9493\n",
      "Epoch 257/500\n",
      "24/24 [==============================] - ETA: 0s - loss: 0.1721 - accuracy: 0.90 - 0s 1ms/step - loss: 0.1380 - accuracy: 0.9507\n",
      "Epoch 258/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1498 - accuracy: 0.9520\n",
      "Epoch 259/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1380 - accuracy: 0.9520\n",
      "Epoch 260/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1371 - accuracy: 0.9493\n",
      "Epoch 261/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1384 - accuracy: 0.9453\n",
      "Epoch 262/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1381 - accuracy: 0.9467\n",
      "Epoch 263/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1457 - accuracy: 0.9440\n",
      "Epoch 264/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1400 - accuracy: 0.9493\n",
      "Epoch 265/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1383 - accuracy: 0.9493\n",
      "Epoch 266/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1335 - accuracy: 0.9507\n",
      "Epoch 267/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1527 - accuracy: 0.9453\n",
      "Epoch 268/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1401 - accuracy: 0.9507\n",
      "Epoch 269/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1401 - accuracy: 0.9520\n",
      "Epoch 270/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1370 - accuracy: 0.9467\n",
      "Epoch 271/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1371 - accuracy: 0.9507\n",
      "Epoch 272/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1370 - accuracy: 0.9520\n",
      "Epoch 273/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1395 - accuracy: 0.9467\n",
      "Epoch 274/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1351 - accuracy: 0.9507\n",
      "Epoch 275/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1361 - accuracy: 0.9493\n",
      "Epoch 276/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1361 - accuracy: 0.9493\n",
      "Epoch 277/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1369 - accuracy: 0.9520\n",
      "Epoch 278/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1390 - accuracy: 0.9480\n",
      "Epoch 279/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1352 - accuracy: 0.9467\n",
      "Epoch 280/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1381 - accuracy: 0.9560\n",
      "Epoch 281/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1378 - accuracy: 0.9507\n",
      "Epoch 282/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1325 - accuracy: 0.9507\n",
      "Epoch 283/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1378 - accuracy: 0.9453\n",
      "Epoch 284/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1409 - accuracy: 0.9493\n",
      "Epoch 285/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1377 - accuracy: 0.9533\n",
      "Epoch 286/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1352 - accuracy: 0.9493\n",
      "Epoch 287/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1361 - accuracy: 0.9493\n",
      "Epoch 288/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1397 - accuracy: 0.9467\n",
      "Epoch 289/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1367 - accuracy: 0.9533\n",
      "Epoch 290/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1340 - accuracy: 0.9493\n",
      "Epoch 291/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1376 - accuracy: 0.9480\n",
      "Epoch 292/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1334 - accuracy: 0.9493\n",
      "Epoch 293/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1372 - accuracy: 0.9480\n",
      "Epoch 294/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1557 - accuracy: 0.9360\n",
      "Epoch 295/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1381 - accuracy: 0.9507\n",
      "Epoch 296/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1367 - accuracy: 0.9453\n",
      "Epoch 297/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1362 - accuracy: 0.9507\n",
      "Epoch 298/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1328 - accuracy: 0.9480\n",
      "Epoch 299/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1371 - accuracy: 0.9480\n",
      "Epoch 300/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1433 - accuracy: 0.9413\n",
      "Epoch 301/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1366 - accuracy: 0.9480\n",
      "Epoch 302/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1371 - accuracy: 0.9507\n",
      "Epoch 303/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1338 - accuracy: 0.9493\n",
      "Epoch 304/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1385 - accuracy: 0.9453\n",
      "Epoch 305/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1346 - accuracy: 0.9467\n",
      "Epoch 306/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1510 - accuracy: 0.9453\n",
      "Epoch 307/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1346 - accuracy: 0.9507\n",
      "Epoch 308/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1426 - accuracy: 0.9440\n",
      "Epoch 309/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1419 - accuracy: 0.9493\n",
      "Epoch 310/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1390 - accuracy: 0.9493\n",
      "Epoch 311/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1374 - accuracy: 0.9480\n",
      "Epoch 312/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1344 - accuracy: 0.9507\n",
      "Epoch 313/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1384 - accuracy: 0.9533\n",
      "Epoch 314/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1338 - accuracy: 0.9520\n",
      "Epoch 315/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1335 - accuracy: 0.9520\n",
      "Epoch 316/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1361 - accuracy: 0.9493\n",
      "Epoch 317/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1338 - accuracy: 0.9493\n",
      "Epoch 318/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1312 - accuracy: 0.9493\n",
      "Epoch 319/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1336 - accuracy: 0.9507\n",
      "Epoch 320/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1347 - accuracy: 0.9547\n",
      "Epoch 321/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1367 - accuracy: 0.9520\n",
      "Epoch 322/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1363 - accuracy: 0.9493\n",
      "Epoch 323/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1354 - accuracy: 0.9520\n",
      "Epoch 324/500\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1327 - accuracy: 0.9493\n",
      "Epoch 325/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1339 - accuracy: 0.9507\n",
      "Epoch 326/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1331 - accuracy: 0.9507\n",
      "Epoch 327/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1371 - accuracy: 0.9520\n",
      "Epoch 328/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1326 - accuracy: 0.9507\n",
      "Epoch 329/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1334 - accuracy: 0.9520\n",
      "Epoch 330/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1325 - accuracy: 0.9507\n",
      "Epoch 331/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1361 - accuracy: 0.9507\n",
      "Epoch 332/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1471 - accuracy: 0.9453\n",
      "Epoch 333/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1366 - accuracy: 0.9480\n",
      "Epoch 334/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1322 - accuracy: 0.9493\n",
      "Epoch 335/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1340 - accuracy: 0.9533\n",
      "Epoch 336/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1375 - accuracy: 0.9507\n",
      "Epoch 337/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1347 - accuracy: 0.9480\n",
      "Epoch 338/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1394 - accuracy: 0.9467\n",
      "Epoch 339/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1326 - accuracy: 0.9467\n",
      "Epoch 340/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1326 - accuracy: 0.9507\n",
      "Epoch 341/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1321 - accuracy: 0.9520\n",
      "Epoch 342/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1339 - accuracy: 0.9520\n",
      "Epoch 343/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1368 - accuracy: 0.9480\n",
      "Epoch 344/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1324 - accuracy: 0.9507\n",
      "Epoch 345/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1337 - accuracy: 0.9480\n",
      "Epoch 346/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1332 - accuracy: 0.9520\n",
      "Epoch 347/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1345 - accuracy: 0.9520\n",
      "Epoch 348/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1344 - accuracy: 0.9507\n",
      "Epoch 349/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1358 - accuracy: 0.9467\n",
      "Epoch 350/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.1402 - accuracy: 0.9413\n",
      "Epoch 351/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.1323 - accuracy: 0.9507\n",
      "Epoch 352/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1370 - accuracy: 0.9480\n",
      "Epoch 353/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1339 - accuracy: 0.9493\n",
      "Epoch 354/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1398 - accuracy: 0.9533\n",
      "Epoch 355/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1304 - accuracy: 0.9533\n",
      "Epoch 356/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1338 - accuracy: 0.9507\n",
      "Epoch 357/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1361 - accuracy: 0.9493\n",
      "Epoch 358/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1360 - accuracy: 0.9493\n",
      "Epoch 359/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1331 - accuracy: 0.9493\n",
      "Epoch 360/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1357 - accuracy: 0.9507\n",
      "Epoch 361/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1393 - accuracy: 0.9453\n",
      "Epoch 362/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1378 - accuracy: 0.9507\n",
      "Epoch 363/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.1312 - accuracy: 0.9507: 0s - loss: 0.1137 - accuracy: 0.\n",
      "Epoch 364/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1342 - accuracy: 0.9507\n",
      "Epoch 365/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1360 - accuracy: 0.9467\n",
      "Epoch 366/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1315 - accuracy: 0.9507\n",
      "Epoch 367/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1363 - accuracy: 0.9533\n",
      "Epoch 368/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1359 - accuracy: 0.9507\n",
      "Epoch 369/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1380 - accuracy: 0.9480\n",
      "Epoch 370/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1324 - accuracy: 0.9480\n",
      "Epoch 371/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1300 - accuracy: 0.9507\n",
      "Epoch 372/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1311 - accuracy: 0.9507\n",
      "Epoch 373/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1299 - accuracy: 0.9507\n",
      "Epoch 374/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1334 - accuracy: 0.9520\n",
      "Epoch 375/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1334 - accuracy: 0.9493\n",
      "Epoch 376/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1412 - accuracy: 0.9453\n",
      "Epoch 377/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1324 - accuracy: 0.9520\n",
      "Epoch 378/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1311 - accuracy: 0.9480\n",
      "Epoch 379/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1356 - accuracy: 0.9520\n",
      "Epoch 380/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1328 - accuracy: 0.9507\n",
      "Epoch 381/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1328 - accuracy: 0.9480\n",
      "Epoch 382/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1290 - accuracy: 0.9467\n",
      "Epoch 383/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1338 - accuracy: 0.9533\n",
      "Epoch 384/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1313 - accuracy: 0.9493\n",
      "Epoch 385/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1320 - accuracy: 0.9493\n",
      "Epoch 386/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1306 - accuracy: 0.9547\n",
      "Epoch 387/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1311 - accuracy: 0.9493\n",
      "Epoch 388/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1305 - accuracy: 0.9533\n",
      "Epoch 389/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1356 - accuracy: 0.9493\n",
      "Epoch 390/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1327 - accuracy: 0.9507\n",
      "Epoch 391/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1307 - accuracy: 0.9480\n",
      "Epoch 392/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1306 - accuracy: 0.9520\n",
      "Epoch 393/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1316 - accuracy: 0.9493\n",
      "Epoch 394/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1314 - accuracy: 0.9520\n",
      "Epoch 395/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1319 - accuracy: 0.9547\n",
      "Epoch 396/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1344 - accuracy: 0.9507\n",
      "Epoch 397/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1348 - accuracy: 0.9507\n",
      "Epoch 398/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1319 - accuracy: 0.9533\n",
      "Epoch 399/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1292 - accuracy: 0.9493\n",
      "Epoch 400/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1313 - accuracy: 0.9533\n",
      "Epoch 401/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1354 - accuracy: 0.9493\n",
      "Epoch 402/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1305 - accuracy: 0.9480\n",
      "Epoch 403/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1363 - accuracy: 0.9480\n",
      "Epoch 404/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1352 - accuracy: 0.9480\n",
      "Epoch 405/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1361 - accuracy: 0.9493\n",
      "Epoch 406/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1417 - accuracy: 0.9520\n",
      "Epoch 407/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1283 - accuracy: 0.9493\n",
      "Epoch 408/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1295 - accuracy: 0.9533\n",
      "Epoch 409/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1319 - accuracy: 0.9507\n",
      "Epoch 410/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1310 - accuracy: 0.9533\n",
      "Epoch 411/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1320 - accuracy: 0.9507\n",
      "Epoch 412/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1316 - accuracy: 0.9520\n",
      "Epoch 413/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1332 - accuracy: 0.9493\n",
      "Epoch 414/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1299 - accuracy: 0.9520\n",
      "Epoch 415/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1296 - accuracy: 0.9493\n",
      "Epoch 416/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1302 - accuracy: 0.9520\n",
      "Epoch 417/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1296 - accuracy: 0.9507\n",
      "Epoch 418/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1298 - accuracy: 0.9533\n",
      "Epoch 419/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1342 - accuracy: 0.9480\n",
      "Epoch 420/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1308 - accuracy: 0.9493\n",
      "Epoch 421/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1306 - accuracy: 0.9493\n",
      "Epoch 422/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1323 - accuracy: 0.9533\n",
      "Epoch 423/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1321 - accuracy: 0.9493\n",
      "Epoch 424/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1318 - accuracy: 0.9520\n",
      "Epoch 425/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1287 - accuracy: 0.9507\n",
      "Epoch 426/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1291 - accuracy: 0.9507\n",
      "Epoch 427/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1287 - accuracy: 0.9480\n",
      "Epoch 428/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1291 - accuracy: 0.9493\n",
      "Epoch 429/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1328 - accuracy: 0.9560\n",
      "Epoch 430/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1306 - accuracy: 0.9493\n",
      "Epoch 431/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1315 - accuracy: 0.9533\n",
      "Epoch 432/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1272 - accuracy: 0.9533\n",
      "Epoch 433/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1354 - accuracy: 0.9533\n",
      "Epoch 434/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1277 - accuracy: 0.9520\n",
      "Epoch 435/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1356 - accuracy: 0.9507\n",
      "Epoch 436/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1310 - accuracy: 0.9520\n",
      "Epoch 437/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1301 - accuracy: 0.9507\n",
      "Epoch 438/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1308 - accuracy: 0.9520\n",
      "Epoch 439/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1371 - accuracy: 0.9440\n",
      "Epoch 440/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1311 - accuracy: 0.9507\n",
      "Epoch 441/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1296 - accuracy: 0.9533\n",
      "Epoch 442/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1307 - accuracy: 0.9480\n",
      "Epoch 443/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1301 - accuracy: 0.9520\n",
      "Epoch 444/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1285 - accuracy: 0.9507\n",
      "Epoch 445/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1325 - accuracy: 0.9480\n",
      "Epoch 446/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1291 - accuracy: 0.9493\n",
      "Epoch 447/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1457 - accuracy: 0.9440\n",
      "Epoch 448/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1304 - accuracy: 0.9533\n",
      "Epoch 449/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1358 - accuracy: 0.9480\n",
      "Epoch 450/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1303 - accuracy: 0.9520\n",
      "Epoch 451/500\n",
      "24/24 [==============================] - ETA: 0s - loss: 0.1289 - accuracy: 0.95 - 0s 3ms/step - loss: 0.1292 - accuracy: 0.9520\n",
      "Epoch 452/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1294 - accuracy: 0.9493\n",
      "Epoch 453/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1318 - accuracy: 0.9533\n",
      "Epoch 454/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1291 - accuracy: 0.9507\n",
      "Epoch 455/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1300 - accuracy: 0.9533\n",
      "Epoch 456/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1272 - accuracy: 0.9507\n",
      "Epoch 457/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1335 - accuracy: 0.9507\n",
      "Epoch 458/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1349 - accuracy: 0.9480\n",
      "Epoch 459/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1394 - accuracy: 0.9493\n",
      "Epoch 460/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1360 - accuracy: 0.9467\n",
      "Epoch 461/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1303 - accuracy: 0.9493\n",
      "Epoch 462/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1321 - accuracy: 0.9533\n",
      "Epoch 463/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1303 - accuracy: 0.9493\n",
      "Epoch 464/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1301 - accuracy: 0.9507\n",
      "Epoch 465/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1283 - accuracy: 0.9507\n",
      "Epoch 466/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1313 - accuracy: 0.9467\n",
      "Epoch 467/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.1326 - accuracy: 0.9493\n",
      "Epoch 468/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1297 - accuracy: 0.9480\n",
      "Epoch 469/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1360 - accuracy: 0.9520\n",
      "Epoch 470/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1370 - accuracy: 0.9520\n",
      "Epoch 471/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1283 - accuracy: 0.9507\n",
      "Epoch 472/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1374 - accuracy: 0.9480\n",
      "Epoch 473/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1317 - accuracy: 0.9453\n",
      "Epoch 474/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1292 - accuracy: 0.9547\n",
      "Epoch 475/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1278 - accuracy: 0.9493\n",
      "Epoch 476/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1293 - accuracy: 0.9493\n",
      "Epoch 477/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1275 - accuracy: 0.9507\n",
      "Epoch 478/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1305 - accuracy: 0.9493\n",
      "Epoch 479/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1310 - accuracy: 0.9507\n",
      "Epoch 480/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1281 - accuracy: 0.9520\n",
      "Epoch 481/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1274 - accuracy: 0.9520\n",
      "Epoch 482/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1323 - accuracy: 0.9520\n",
      "Epoch 483/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1267 - accuracy: 0.9547\n",
      "Epoch 484/500\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1295 - accuracy: 0.9507\n",
      "Epoch 485/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1280 - accuracy: 0.9520\n",
      "Epoch 486/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1288 - accuracy: 0.9493\n",
      "Epoch 487/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1287 - accuracy: 0.9507\n",
      "Epoch 488/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1298 - accuracy: 0.9493\n",
      "Epoch 489/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1335 - accuracy: 0.9520\n",
      "Epoch 490/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1290 - accuracy: 0.9507\n",
      "Epoch 491/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1306 - accuracy: 0.9480\n",
      "Epoch 492/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1274 - accuracy: 0.9493\n",
      "Epoch 493/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1279 - accuracy: 0.9520\n",
      "Epoch 494/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1286 - accuracy: 0.9480\n",
      "Epoch 495/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1288 - accuracy: 0.9507\n",
      "Epoch 496/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1332 - accuracy: 0.9493\n",
      "Epoch 497/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1302 - accuracy: 0.9600\n",
      "Epoch 498/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1303 - accuracy: 0.9507\n",
      "Epoch 499/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1318 - accuracy: 0.9520\n",
      "Epoch 500/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.1270 - accuracy: 0.9520\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\anaconda\\lib\\site-packages\\ipykernel_launcher.py:45: UserWarning: The following kwargs were not used by contour: 'levals'\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 39.4114 - accuracy: 0.7453\n",
      "Epoch 2/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 18.7518 - accuracy: 0.7973\n",
      "Epoch 3/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 8.4406 - accuracy: 0.8400\n",
      "Epoch 4/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 3.7834 - accuracy: 0.8160\n",
      "Epoch 5/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 1.8418 - accuracy: 0.6227\n",
      "Epoch 6/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 1.0982 - accuracy: 0.6187\n",
      "Epoch 7/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.8305 - accuracy: 0.7093\n",
      "Epoch 8/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.7435 - accuracy: 0.7147\n",
      "Epoch 9/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.7130 - accuracy: 0.7987\n",
      "Epoch 10/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6820 - accuracy: 0.8453\n",
      "Epoch 11/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6113 - accuracy: 0.8680\n",
      "Epoch 12/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.5525 - accuracy: 0.8747\n",
      "Epoch 13/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.5212 - accuracy: 0.8720\n",
      "Epoch 14/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.5116 - accuracy: 0.8680\n",
      "Epoch 15/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4945 - accuracy: 0.8773\n",
      "Epoch 16/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4865 - accuracy: 0.8627\n",
      "Epoch 17/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.5055 - accuracy: 0.8653\n",
      "Epoch 18/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4700 - accuracy: 0.8680\n",
      "Epoch 19/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4752 - accuracy: 0.8680\n",
      "Epoch 20/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4618 - accuracy: 0.8680\n",
      "Epoch 21/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4614 - accuracy: 0.8787\n",
      "Epoch 22/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4578 - accuracy: 0.8747\n",
      "Epoch 23/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4505 - accuracy: 0.8760\n",
      "Epoch 24/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4434 - accuracy: 0.8760\n",
      "Epoch 25/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4424 - accuracy: 0.8773\n",
      "Epoch 26/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4406 - accuracy: 0.8707\n",
      "Epoch 27/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4490 - accuracy: 0.8720\n",
      "Epoch 28/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4518 - accuracy: 0.8547\n",
      "Epoch 29/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4375 - accuracy: 0.8707\n",
      "Epoch 30/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4387 - accuracy: 0.8693\n",
      "Epoch 31/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4439 - accuracy: 0.8733\n",
      "Epoch 32/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4523 - accuracy: 0.8733\n",
      "Epoch 33/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4421 - accuracy: 0.8640\n",
      "Epoch 34/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4318 - accuracy: 0.8787\n",
      "Epoch 35/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4242 - accuracy: 0.8747\n",
      "Epoch 36/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4259 - accuracy: 0.8613\n",
      "Epoch 37/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4395 - accuracy: 0.8587\n",
      "Epoch 38/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4245 - accuracy: 0.8720\n",
      "Epoch 39/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4194 - accuracy: 0.8760\n",
      "Epoch 40/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4180 - accuracy: 0.8720\n",
      "Epoch 41/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4343 - accuracy: 0.8533\n",
      "Epoch 42/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4258 - accuracy: 0.8773\n",
      "Epoch 43/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4157 - accuracy: 0.8747\n",
      "Epoch 44/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4213 - accuracy: 0.8720\n",
      "Epoch 45/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4110 - accuracy: 0.8707\n",
      "Epoch 46/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4086 - accuracy: 0.8787\n",
      "Epoch 47/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4093 - accuracy: 0.8787\n",
      "Epoch 48/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4123 - accuracy: 0.8773\n",
      "Epoch 49/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4100 - accuracy: 0.8733\n",
      "Epoch 50/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4072 - accuracy: 0.8773\n",
      "Epoch 51/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.4014 - accuracy: 0.8720\n",
      "Epoch 52/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4009 - accuracy: 0.8733\n",
      "Epoch 53/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4079 - accuracy: 0.8680\n",
      "Epoch 54/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4112 - accuracy: 0.8747\n",
      "Epoch 55/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3990 - accuracy: 0.8747\n",
      "Epoch 56/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4218 - accuracy: 0.8680\n",
      "Epoch 57/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4057 - accuracy: 0.8707\n",
      "Epoch 58/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3990 - accuracy: 0.8720\n",
      "Epoch 59/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3962 - accuracy: 0.8773\n",
      "Epoch 60/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3978 - accuracy: 0.8773\n",
      "Epoch 61/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.4018 - accuracy: 0.8667\n",
      "Epoch 62/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3939 - accuracy: 0.8787\n",
      "Epoch 63/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3899 - accuracy: 0.8747\n",
      "Epoch 64/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3974 - accuracy: 0.8693\n",
      "Epoch 65/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3983 - accuracy: 0.8800\n",
      "Epoch 66/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3944 - accuracy: 0.8747\n",
      "Epoch 67/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3903 - accuracy: 0.8787\n",
      "Epoch 68/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3878 - accuracy: 0.8733\n",
      "Epoch 69/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3939 - accuracy: 0.8733\n",
      "Epoch 70/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3893 - accuracy: 0.8787\n",
      "Epoch 71/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3858 - accuracy: 0.8773\n",
      "Epoch 72/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3911 - accuracy: 0.8653\n",
      "Epoch 73/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.3825 - accuracy: 0.8787\n",
      "Epoch 74/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3873 - accuracy: 0.8827\n",
      "Epoch 75/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3905 - accuracy: 0.8720\n",
      "Epoch 76/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.4087 - accuracy: 0.8747\n",
      "Epoch 77/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3938 - accuracy: 0.8587\n",
      "Epoch 78/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3859 - accuracy: 0.8813\n",
      "Epoch 79/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3809 - accuracy: 0.8747\n",
      "Epoch 80/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3814 - accuracy: 0.8680\n",
      "Epoch 81/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3802 - accuracy: 0.8773\n",
      "Epoch 82/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3850 - accuracy: 0.8760\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 83/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3792 - accuracy: 0.8867\n",
      "Epoch 84/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3814 - accuracy: 0.8693\n",
      "Epoch 85/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3845 - accuracy: 0.8827\n",
      "Epoch 86/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3763 - accuracy: 0.8733\n",
      "Epoch 87/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3858 - accuracy: 0.8760\n",
      "Epoch 88/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3982 - accuracy: 0.8627\n",
      "Epoch 89/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.3897 - accuracy: 0.8733\n",
      "Epoch 90/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3862 - accuracy: 0.8747\n",
      "Epoch 91/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3739 - accuracy: 0.8800\n",
      "Epoch 92/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.3903 - accuracy: 0.8720\n",
      "Epoch 93/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.3818 - accuracy: 0.8707\n",
      "Epoch 94/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.3730 - accuracy: 0.8813\n",
      "Epoch 95/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3733 - accuracy: 0.8827\n",
      "Epoch 96/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3744 - accuracy: 0.8773\n",
      "Epoch 97/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3902 - accuracy: 0.8667\n",
      "Epoch 98/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3900 - accuracy: 0.8707\n",
      "Epoch 99/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3772 - accuracy: 0.8707\n",
      "Epoch 100/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3923 - accuracy: 0.8627\n",
      "Epoch 101/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3773 - accuracy: 0.8760\n",
      "Epoch 102/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3661 - accuracy: 0.8773\n",
      "Epoch 103/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3697 - accuracy: 0.8773\n",
      "Epoch 104/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3678 - accuracy: 0.8760\n",
      "Epoch 105/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3699 - accuracy: 0.8800\n",
      "Epoch 106/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3746 - accuracy: 0.8747\n",
      "Epoch 107/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3714 - accuracy: 0.8787\n",
      "Epoch 108/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3646 - accuracy: 0.8853\n",
      "Epoch 109/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3710 - accuracy: 0.8773\n",
      "Epoch 110/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3668 - accuracy: 0.8787\n",
      "Epoch 111/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3642 - accuracy: 0.8773\n",
      "Epoch 112/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3790 - accuracy: 0.8667\n",
      "Epoch 113/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3666 - accuracy: 0.8787\n",
      "Epoch 114/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3611 - accuracy: 0.8800\n",
      "Epoch 115/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3645 - accuracy: 0.8853\n",
      "Epoch 116/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3644 - accuracy: 0.8773\n",
      "Epoch 117/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3619 - accuracy: 0.8867\n",
      "Epoch 118/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3620 - accuracy: 0.8827\n",
      "Epoch 119/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3660 - accuracy: 0.8787\n",
      "Epoch 120/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3668 - accuracy: 0.8760\n",
      "Epoch 121/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3738 - accuracy: 0.8733\n",
      "Epoch 122/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3747 - accuracy: 0.8773\n",
      "Epoch 123/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3624 - accuracy: 0.8893\n",
      "Epoch 124/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3601 - accuracy: 0.8773\n",
      "Epoch 125/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3621 - accuracy: 0.8800\n",
      "Epoch 126/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.3620 - accuracy: 0.8880\n",
      "Epoch 127/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3627 - accuracy: 0.8747\n",
      "Epoch 128/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3757 - accuracy: 0.8800\n",
      "Epoch 129/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3722 - accuracy: 0.8787\n",
      "Epoch 130/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3623 - accuracy: 0.8813\n",
      "Epoch 131/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3571 - accuracy: 0.8840\n",
      "Epoch 132/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3564 - accuracy: 0.8800\n",
      "Epoch 133/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3630 - accuracy: 0.8800\n",
      "Epoch 134/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3517 - accuracy: 0.8867\n",
      "Epoch 135/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3567 - accuracy: 0.8760\n",
      "Epoch 136/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3782 - accuracy: 0.8720\n",
      "Epoch 137/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3668 - accuracy: 0.8827\n",
      "Epoch 138/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3716 - accuracy: 0.8787\n",
      "Epoch 139/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3604 - accuracy: 0.8853\n",
      "Epoch 140/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3549 - accuracy: 0.8773\n",
      "Epoch 141/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3540 - accuracy: 0.8787\n",
      "Epoch 142/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3526 - accuracy: 0.8853\n",
      "Epoch 143/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3614 - accuracy: 0.8747\n",
      "Epoch 144/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3571 - accuracy: 0.8827\n",
      "Epoch 145/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3505 - accuracy: 0.8827\n",
      "Epoch 146/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3505 - accuracy: 0.8787\n",
      "Epoch 147/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3525 - accuracy: 0.8787\n",
      "Epoch 148/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3521 - accuracy: 0.8827\n",
      "Epoch 149/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3529 - accuracy: 0.8800\n",
      "Epoch 150/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3492 - accuracy: 0.8840\n",
      "Epoch 151/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3493 - accuracy: 0.8853\n",
      "Epoch 152/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3489 - accuracy: 0.8827\n",
      "Epoch 153/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3699 - accuracy: 0.8653\n",
      "Epoch 154/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3541 - accuracy: 0.8787\n",
      "Epoch 155/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3556 - accuracy: 0.8720\n",
      "Epoch 156/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3488 - accuracy: 0.8747\n",
      "Epoch 157/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3497 - accuracy: 0.8760\n",
      "Epoch 158/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3502 - accuracy: 0.8773\n",
      "Epoch 159/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3469 - accuracy: 0.8787\n",
      "Epoch 160/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3547 - accuracy: 0.8800\n",
      "Epoch 161/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3536 - accuracy: 0.8747\n",
      "Epoch 162/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.3624 - accuracy: 0.8800\n",
      "Epoch 163/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3632 - accuracy: 0.8640\n",
      "Epoch 164/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3593 - accuracy: 0.8813\n",
      "Epoch 165/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3571 - accuracy: 0.8733\n",
      "Epoch 166/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3507 - accuracy: 0.8800\n",
      "Epoch 167/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3454 - accuracy: 0.8853\n",
      "Epoch 168/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3521 - accuracy: 0.8760\n",
      "Epoch 169/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3527 - accuracy: 0.8800\n",
      "Epoch 170/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3453 - accuracy: 0.8827\n",
      "Epoch 171/500\n",
      "24/24 [==============================] - ETA: 0s - loss: 0.2667 - accuracy: 0.87 - 0s 2ms/step - loss: 0.3488 - accuracy: 0.8800\n",
      "Epoch 172/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3482 - accuracy: 0.8787\n",
      "Epoch 173/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3494 - accuracy: 0.8827\n",
      "Epoch 174/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3485 - accuracy: 0.8800\n",
      "Epoch 175/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3589 - accuracy: 0.8787\n",
      "Epoch 176/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3481 - accuracy: 0.8800\n",
      "Epoch 177/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3467 - accuracy: 0.8760\n",
      "Epoch 178/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3422 - accuracy: 0.8827\n",
      "Epoch 179/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3492 - accuracy: 0.8693\n",
      "Epoch 180/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3420 - accuracy: 0.8773\n",
      "Epoch 181/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3536 - accuracy: 0.8800\n",
      "Epoch 182/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3523 - accuracy: 0.8733\n",
      "Epoch 183/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3494 - accuracy: 0.8747\n",
      "Epoch 184/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3446 - accuracy: 0.8840\n",
      "Epoch 185/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3428 - accuracy: 0.8880\n",
      "Epoch 186/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3438 - accuracy: 0.8813\n",
      "Epoch 187/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3408 - accuracy: 0.8880\n",
      "Epoch 188/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3462 - accuracy: 0.8880\n",
      "Epoch 189/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3415 - accuracy: 0.8867\n",
      "Epoch 190/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3426 - accuracy: 0.8853\n",
      "Epoch 191/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3420 - accuracy: 0.8880\n",
      "Epoch 192/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3427 - accuracy: 0.8787\n",
      "Epoch 193/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3502 - accuracy: 0.8747\n",
      "Epoch 194/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3440 - accuracy: 0.8773\n",
      "Epoch 195/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3396 - accuracy: 0.8853\n",
      "Epoch 196/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3515 - accuracy: 0.8760\n",
      "Epoch 197/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3507 - accuracy: 0.8760\n",
      "Epoch 198/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3390 - accuracy: 0.8773\n",
      "Epoch 199/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3416 - accuracy: 0.8813\n",
      "Epoch 200/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3398 - accuracy: 0.8760\n",
      "Epoch 201/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3441 - accuracy: 0.8840\n",
      "Epoch 202/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3423 - accuracy: 0.8760\n",
      "Epoch 203/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3486 - accuracy: 0.8813\n",
      "Epoch 204/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3572 - accuracy: 0.8747\n",
      "Epoch 205/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3576 - accuracy: 0.8733\n",
      "Epoch 206/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3409 - accuracy: 0.8853\n",
      "Epoch 207/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3399 - accuracy: 0.8800\n",
      "Epoch 208/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3378 - accuracy: 0.8827\n",
      "Epoch 209/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3386 - accuracy: 0.8880\n",
      "Epoch 210/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3374 - accuracy: 0.8880\n",
      "Epoch 211/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3432 - accuracy: 0.8773\n",
      "Epoch 212/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3345 - accuracy: 0.8773\n",
      "Epoch 213/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3401 - accuracy: 0.8787\n",
      "Epoch 214/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3366 - accuracy: 0.8800\n",
      "Epoch 215/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3458 - accuracy: 0.8733\n",
      "Epoch 216/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3591 - accuracy: 0.8773\n",
      "Epoch 217/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3475 - accuracy: 0.8787\n",
      "Epoch 218/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3457 - accuracy: 0.8667\n",
      "Epoch 219/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3371 - accuracy: 0.8813\n",
      "Epoch 220/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3385 - accuracy: 0.8800\n",
      "Epoch 221/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3390 - accuracy: 0.8813\n",
      "Epoch 222/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3366 - accuracy: 0.8787\n",
      "Epoch 223/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3360 - accuracy: 0.8747\n",
      "Epoch 224/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3442 - accuracy: 0.8747\n",
      "Epoch 225/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3562 - accuracy: 0.8707\n",
      "Epoch 226/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3445 - accuracy: 0.8760\n",
      "Epoch 227/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3438 - accuracy: 0.8787\n",
      "Epoch 228/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3364 - accuracy: 0.8827\n",
      "Epoch 229/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3374 - accuracy: 0.8733\n",
      "Epoch 230/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3417 - accuracy: 0.8773\n",
      "Epoch 231/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3318 - accuracy: 0.8827\n",
      "Epoch 232/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3368 - accuracy: 0.8840\n",
      "Epoch 233/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3305 - accuracy: 0.8800\n",
      "Epoch 234/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3426 - accuracy: 0.8733\n",
      "Epoch 235/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3344 - accuracy: 0.8840\n",
      "Epoch 236/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3333 - accuracy: 0.8827: 0s - loss: 0.3381 - accuracy: 0.88\n",
      "Epoch 237/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3366 - accuracy: 0.8760\n",
      "Epoch 238/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3337 - accuracy: 0.8800\n",
      "Epoch 239/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3315 - accuracy: 0.8813\n",
      "Epoch 240/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3351 - accuracy: 0.8827\n",
      "Epoch 241/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3448 - accuracy: 0.8813\n",
      "Epoch 242/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3330 - accuracy: 0.8813\n",
      "Epoch 243/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3332 - accuracy: 0.8800\n",
      "Epoch 244/500\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3379 - accuracy: 0.8787\n",
      "Epoch 245/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3295 - accuracy: 0.8747\n",
      "Epoch 246/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3320 - accuracy: 0.8800\n",
      "Epoch 247/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3384 - accuracy: 0.8880\n",
      "Epoch 248/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3342 - accuracy: 0.8773\n",
      "Epoch 249/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3422 - accuracy: 0.8760\n",
      "Epoch 250/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3423 - accuracy: 0.8787\n",
      "Epoch 251/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3528 - accuracy: 0.8747\n",
      "Epoch 252/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3386 - accuracy: 0.8720\n",
      "Epoch 253/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3441 - accuracy: 0.8773\n",
      "Epoch 254/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3440 - accuracy: 0.8747\n",
      "Epoch 255/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3335 - accuracy: 0.8840\n",
      "Epoch 256/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3377 - accuracy: 0.8813\n",
      "Epoch 257/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3375 - accuracy: 0.8773\n",
      "Epoch 258/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3320 - accuracy: 0.8840\n",
      "Epoch 259/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3419 - accuracy: 0.8747\n",
      "Epoch 260/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3509 - accuracy: 0.8707\n",
      "Epoch 261/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3333 - accuracy: 0.8773\n",
      "Epoch 262/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3338 - accuracy: 0.8853\n",
      "Epoch 263/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3322 - accuracy: 0.8813\n",
      "Epoch 264/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3311 - accuracy: 0.8773\n",
      "Epoch 265/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3392 - accuracy: 0.8827\n",
      "Epoch 266/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3321 - accuracy: 0.8827\n",
      "Epoch 267/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3325 - accuracy: 0.8840\n",
      "Epoch 268/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3276 - accuracy: 0.8827\n",
      "Epoch 269/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3272 - accuracy: 0.8853\n",
      "Epoch 270/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3454 - accuracy: 0.8720\n",
      "Epoch 271/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3475 - accuracy: 0.8640\n",
      "Epoch 272/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3349 - accuracy: 0.8720\n",
      "Epoch 273/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3409 - accuracy: 0.8800\n",
      "Epoch 274/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3315 - accuracy: 0.8813\n",
      "Epoch 275/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3266 - accuracy: 0.8813\n",
      "Epoch 276/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3293 - accuracy: 0.8867\n",
      "Epoch 277/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3262 - accuracy: 0.8853\n",
      "Epoch 278/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3296 - accuracy: 0.8867\n",
      "Epoch 279/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3474 - accuracy: 0.8733\n",
      "Epoch 280/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3417 - accuracy: 0.8813\n",
      "Epoch 281/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3339 - accuracy: 0.8733\n",
      "Epoch 282/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3321 - accuracy: 0.8773\n",
      "Epoch 283/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3285 - accuracy: 0.8773\n",
      "Epoch 284/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3417 - accuracy: 0.8813\n",
      "Epoch 285/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3242 - accuracy: 0.8827\n",
      "Epoch 286/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3370 - accuracy: 0.8827\n",
      "Epoch 287/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3321 - accuracy: 0.8813\n",
      "Epoch 288/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3277 - accuracy: 0.8800\n",
      "Epoch 289/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3267 - accuracy: 0.8827\n",
      "Epoch 290/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3289 - accuracy: 0.8813\n",
      "Epoch 291/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3357 - accuracy: 0.8800\n",
      "Epoch 292/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3340 - accuracy: 0.8800\n",
      "Epoch 293/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3300 - accuracy: 0.8747\n",
      "Epoch 294/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3290 - accuracy: 0.8800\n",
      "Epoch 295/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3307 - accuracy: 0.8827\n",
      "Epoch 296/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3322 - accuracy: 0.8867\n",
      "Epoch 297/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3301 - accuracy: 0.8813\n",
      "Epoch 298/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3256 - accuracy: 0.8800\n",
      "Epoch 299/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3289 - accuracy: 0.8747\n",
      "Epoch 300/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3257 - accuracy: 0.8800\n",
      "Epoch 301/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3281 - accuracy: 0.8867\n",
      "Epoch 302/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3256 - accuracy: 0.8813\n",
      "Epoch 303/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3310 - accuracy: 0.8787\n",
      "Epoch 304/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3410 - accuracy: 0.8800\n",
      "Epoch 305/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3298 - accuracy: 0.8800\n",
      "Epoch 306/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3365 - accuracy: 0.8773\n",
      "Epoch 307/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3299 - accuracy: 0.8800\n",
      "Epoch 308/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3253 - accuracy: 0.8853\n",
      "Epoch 309/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3255 - accuracy: 0.8840\n",
      "Epoch 310/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3273 - accuracy: 0.8787\n",
      "Epoch 311/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3385 - accuracy: 0.8747\n",
      "Epoch 312/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3285 - accuracy: 0.8853\n",
      "Epoch 313/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3237 - accuracy: 0.8813\n",
      "Epoch 314/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3226 - accuracy: 0.8800\n",
      "Epoch 315/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3237 - accuracy: 0.8893\n",
      "Epoch 316/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3309 - accuracy: 0.8827\n",
      "Epoch 317/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3283 - accuracy: 0.8787\n",
      "Epoch 318/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3234 - accuracy: 0.8893\n",
      "Epoch 319/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3248 - accuracy: 0.8787\n",
      "Epoch 320/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3195 - accuracy: 0.8827\n",
      "Epoch 321/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3254 - accuracy: 0.8880\n",
      "Epoch 322/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3324 - accuracy: 0.8747\n",
      "Epoch 323/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3334 - accuracy: 0.8747\n",
      "Epoch 324/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3460 - accuracy: 0.8747\n",
      "Epoch 325/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3251 - accuracy: 0.8827\n",
      "Epoch 326/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3207 - accuracy: 0.8827\n",
      "Epoch 327/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3204 - accuracy: 0.8813\n",
      "Epoch 328/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3242 - accuracy: 0.8827\n",
      "Epoch 329/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3281 - accuracy: 0.8827\n",
      "Epoch 330/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3374 - accuracy: 0.8720\n",
      "Epoch 331/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3268 - accuracy: 0.8707\n",
      "Epoch 332/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3267 - accuracy: 0.8840\n",
      "Epoch 333/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3218 - accuracy: 0.8827\n",
      "Epoch 334/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3289 - accuracy: 0.8760\n",
      "Epoch 335/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3229 - accuracy: 0.8840\n",
      "Epoch 336/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3326 - accuracy: 0.8787\n",
      "Epoch 337/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3313 - accuracy: 0.8853\n",
      "Epoch 338/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3239 - accuracy: 0.8800\n",
      "Epoch 339/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3203 - accuracy: 0.8800\n",
      "Epoch 340/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3235 - accuracy: 0.8733\n",
      "Epoch 341/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3236 - accuracy: 0.8800\n",
      "Epoch 342/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3192 - accuracy: 0.8827\n",
      "Epoch 343/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3275 - accuracy: 0.8880\n",
      "Epoch 344/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3262 - accuracy: 0.8840\n",
      "Epoch 345/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3233 - accuracy: 0.8827\n",
      "Epoch 346/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3209 - accuracy: 0.8800\n",
      "Epoch 347/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3207 - accuracy: 0.8827\n",
      "Epoch 348/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3176 - accuracy: 0.8827\n",
      "Epoch 349/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3211 - accuracy: 0.8853\n",
      "Epoch 350/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3191 - accuracy: 0.8907\n",
      "Epoch 351/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3222 - accuracy: 0.8840: 0s - loss: 0.3040 - accuracy: 0.89\n",
      "Epoch 352/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3200 - accuracy: 0.8840\n",
      "Epoch 353/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3319 - accuracy: 0.8880\n",
      "Epoch 354/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3230 - accuracy: 0.8853\n",
      "Epoch 355/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3195 - accuracy: 0.8867\n",
      "Epoch 356/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3246 - accuracy: 0.8787\n",
      "Epoch 357/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3207 - accuracy: 0.8827\n",
      "Epoch 358/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3169 - accuracy: 0.8747\n",
      "Epoch 359/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3273 - accuracy: 0.8827\n",
      "Epoch 360/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3246 - accuracy: 0.8747\n",
      "Epoch 361/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3166 - accuracy: 0.8787\n",
      "Epoch 362/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3267 - accuracy: 0.8787\n",
      "Epoch 363/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3238 - accuracy: 0.8747\n",
      "Epoch 364/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3207 - accuracy: 0.8840\n",
      "Epoch 365/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3244 - accuracy: 0.8840: 0s - loss: 0.3320 - accuracy: 0.87\n",
      "Epoch 366/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3235 - accuracy: 0.8853\n",
      "Epoch 367/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3660 - accuracy: 0.8667\n",
      "Epoch 368/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3220 - accuracy: 0.8813\n",
      "Epoch 369/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3194 - accuracy: 0.8853\n",
      "Epoch 370/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3233 - accuracy: 0.8813\n",
      "Epoch 371/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3216 - accuracy: 0.8773\n",
      "Epoch 372/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3305 - accuracy: 0.8733\n",
      "Epoch 373/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3406 - accuracy: 0.8773\n",
      "Epoch 374/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3219 - accuracy: 0.8787\n",
      "Epoch 375/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3188 - accuracy: 0.8867\n",
      "Epoch 376/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3205 - accuracy: 0.8800: 0s - loss: 0.3159 - accuracy: 0.87\n",
      "Epoch 377/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3292 - accuracy: 0.8787\n",
      "Epoch 378/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3204 - accuracy: 0.8813\n",
      "Epoch 379/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3231 - accuracy: 0.8787\n",
      "Epoch 380/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3172 - accuracy: 0.8840\n",
      "Epoch 381/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3247 - accuracy: 0.8747\n",
      "Epoch 382/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3182 - accuracy: 0.8827\n",
      "Epoch 383/500\n",
      "24/24 [==============================] - ETA: 0s - loss: 0.3355 - accuracy: 0.88 - 0s 3ms/step - loss: 0.3229 - accuracy: 0.8893\n",
      "Epoch 384/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3266 - accuracy: 0.8747\n",
      "Epoch 385/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3199 - accuracy: 0.8813\n",
      "Epoch 386/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3165 - accuracy: 0.8813\n",
      "Epoch 387/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3152 - accuracy: 0.8827\n",
      "Epoch 388/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3170 - accuracy: 0.8840\n",
      "Epoch 389/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3150 - accuracy: 0.8840\n",
      "Epoch 390/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3175 - accuracy: 0.8827\n",
      "Epoch 391/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3170 - accuracy: 0.8867\n",
      "Epoch 392/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3273 - accuracy: 0.8800\n",
      "Epoch 393/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3309 - accuracy: 0.8707\n",
      "Epoch 394/500\n",
      "24/24 [==============================] - 0s 6ms/step - loss: 0.3282 - accuracy: 0.8747\n",
      "Epoch 395/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3258 - accuracy: 0.8853\n",
      "Epoch 396/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3198 - accuracy: 0.8827\n",
      "Epoch 397/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3188 - accuracy: 0.8840\n",
      "Epoch 398/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3175 - accuracy: 0.8867\n",
      "Epoch 399/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3144 - accuracy: 0.8787\n",
      "Epoch 400/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.3232 - accuracy: 0.8773\n",
      "Epoch 401/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3150 - accuracy: 0.8840\n",
      "Epoch 402/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3204 - accuracy: 0.8853\n",
      "Epoch 403/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3193 - accuracy: 0.8773\n",
      "Epoch 404/500\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3154 - accuracy: 0.8787\n",
      "Epoch 405/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3202 - accuracy: 0.8773\n",
      "Epoch 406/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3248 - accuracy: 0.8840\n",
      "Epoch 407/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3157 - accuracy: 0.8853\n",
      "Epoch 408/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3318 - accuracy: 0.8787\n",
      "Epoch 409/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3266 - accuracy: 0.8693\n",
      "Epoch 410/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3161 - accuracy: 0.8747\n",
      "Epoch 411/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3274 - accuracy: 0.8827\n",
      "Epoch 412/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3167 - accuracy: 0.8840\n",
      "Epoch 413/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3183 - accuracy: 0.8787\n",
      "Epoch 414/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3206 - accuracy: 0.8867\n",
      "Epoch 415/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3199 - accuracy: 0.8853\n",
      "Epoch 416/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3150 - accuracy: 0.8813\n",
      "Epoch 417/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3166 - accuracy: 0.8933\n",
      "Epoch 418/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3289 - accuracy: 0.8733\n",
      "Epoch 419/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3265 - accuracy: 0.8773\n",
      "Epoch 420/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3195 - accuracy: 0.8867\n",
      "Epoch 421/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3212 - accuracy: 0.8840\n",
      "Epoch 422/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3220 - accuracy: 0.8787\n",
      "Epoch 423/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3207 - accuracy: 0.8760\n",
      "Epoch 424/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3163 - accuracy: 0.8840\n",
      "Epoch 425/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3147 - accuracy: 0.8907\n",
      "Epoch 426/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3331 - accuracy: 0.8693\n",
      "Epoch 427/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3130 - accuracy: 0.8880\n",
      "Epoch 428/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3172 - accuracy: 0.8827\n",
      "Epoch 429/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3240 - accuracy: 0.8853\n",
      "Epoch 430/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3185 - accuracy: 0.8880\n",
      "Epoch 431/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3125 - accuracy: 0.8840\n",
      "Epoch 432/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3245 - accuracy: 0.8840\n",
      "Epoch 433/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3199 - accuracy: 0.8827\n",
      "Epoch 434/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3143 - accuracy: 0.8800\n",
      "Epoch 435/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3162 - accuracy: 0.8853\n",
      "Epoch 436/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3159 - accuracy: 0.8893\n",
      "Epoch 437/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3130 - accuracy: 0.8853\n",
      "Epoch 438/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3212 - accuracy: 0.8800\n",
      "Epoch 439/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3279 - accuracy: 0.8853\n",
      "Epoch 440/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3188 - accuracy: 0.8733\n",
      "Epoch 441/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3244 - accuracy: 0.8853\n",
      "Epoch 442/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3292 - accuracy: 0.8840\n",
      "Epoch 443/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3294 - accuracy: 0.8773\n",
      "Epoch 444/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3131 - accuracy: 0.8853\n",
      "Epoch 445/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3149 - accuracy: 0.8867\n",
      "Epoch 446/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3127 - accuracy: 0.8840\n",
      "Epoch 447/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3147 - accuracy: 0.8760\n",
      "Epoch 448/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3220 - accuracy: 0.8813\n",
      "Epoch 449/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3128 - accuracy: 0.8827\n",
      "Epoch 450/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3142 - accuracy: 0.8827\n",
      "Epoch 451/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3102 - accuracy: 0.8893\n",
      "Epoch 452/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3124 - accuracy: 0.8827\n",
      "Epoch 453/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3102 - accuracy: 0.8880\n",
      "Epoch 454/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3109 - accuracy: 0.8880\n",
      "Epoch 455/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3149 - accuracy: 0.8853\n",
      "Epoch 456/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3172 - accuracy: 0.8747\n",
      "Epoch 457/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3169 - accuracy: 0.8840\n",
      "Epoch 458/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3171 - accuracy: 0.8853\n",
      "Epoch 459/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3170 - accuracy: 0.8853\n",
      "Epoch 460/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3298 - accuracy: 0.8747\n",
      "Epoch 461/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3198 - accuracy: 0.8813\n",
      "Epoch 462/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3113 - accuracy: 0.8827\n",
      "Epoch 463/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3197 - accuracy: 0.8787\n",
      "Epoch 464/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3245 - accuracy: 0.8787\n",
      "Epoch 465/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3136 - accuracy: 0.8880\n",
      "Epoch 466/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3128 - accuracy: 0.8840\n",
      "Epoch 467/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3132 - accuracy: 0.8813\n",
      "Epoch 468/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3247 - accuracy: 0.8840\n",
      "Epoch 469/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3129 - accuracy: 0.8827\n",
      "Epoch 470/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3192 - accuracy: 0.8813\n",
      "Epoch 471/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.3197 - accuracy: 0.8880\n",
      "Epoch 472/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3183 - accuracy: 0.8800\n",
      "Epoch 473/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3127 - accuracy: 0.8880\n",
      "Epoch 474/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3097 - accuracy: 0.8867\n",
      "Epoch 475/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.3120 - accuracy: 0.8920\n",
      "Epoch 476/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3096 - accuracy: 0.8813\n",
      "Epoch 477/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3126 - accuracy: 0.8827\n",
      "Epoch 478/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3235 - accuracy: 0.8733\n",
      "Epoch 479/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3208 - accuracy: 0.8773\n",
      "Epoch 480/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3100 - accuracy: 0.8800\n",
      "Epoch 481/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3091 - accuracy: 0.8867\n",
      "Epoch 482/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3158 - accuracy: 0.8893\n",
      "Epoch 483/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3123 - accuracy: 0.8760\n",
      "Epoch 484/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3160 - accuracy: 0.8787\n",
      "Epoch 485/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3090 - accuracy: 0.8893\n",
      "Epoch 486/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3124 - accuracy: 0.8827\n",
      "Epoch 487/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3186 - accuracy: 0.8787\n",
      "Epoch 488/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3207 - accuracy: 0.8827\n",
      "Epoch 489/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3195 - accuracy: 0.8773\n",
      "Epoch 490/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3191 - accuracy: 0.8853\n",
      "Epoch 491/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3202 - accuracy: 0.8840\n",
      "Epoch 492/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.3181 - accuracy: 0.8827\n",
      "Epoch 493/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.3079 - accuracy: 0.8867\n",
      "Epoch 494/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3088 - accuracy: 0.8800\n",
      "Epoch 495/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3124 - accuracy: 0.8880\n",
      "Epoch 496/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3219 - accuracy: 0.8747\n",
      "Epoch 497/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3183 - accuracy: 0.8827\n",
      "Epoch 498/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3244 - accuracy: 0.8733\n",
      "Epoch 499/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3172 - accuracy: 0.8840\n",
      "Epoch 500/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3080 - accuracy: 0.8853\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\anaconda\\lib\\site-packages\\ipykernel_launcher.py:45: UserWarning: The following kwargs were not used by contour: 'levals'\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 47.1791 - accuracy: 0.6160\n",
      "Epoch 2/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 22.3637 - accuracy: 0.7733\n",
      "Epoch 3/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 9.9851 - accuracy: 0.7880\n",
      "Epoch 4/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 4.3945 - accuracy: 0.7840\n",
      "Epoch 5/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 2.0595 - accuracy: 0.7973\n",
      "Epoch 6/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 1.1520 - accuracy: 0.7933\n",
      "Epoch 7/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.8190 - accuracy: 0.7973\n",
      "Epoch 8/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.6856 - accuracy: 0.8147\n",
      "Epoch 9/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6290 - accuracy: 0.8200\n",
      "Epoch 10/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6047 - accuracy: 0.8280\n",
      "Epoch 11/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.5812 - accuracy: 0.8333\n",
      "Epoch 12/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.5718 - accuracy: 0.8293\n",
      "Epoch 13/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.5585 - accuracy: 0.8333\n",
      "Epoch 14/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.5501 - accuracy: 0.8400\n",
      "Epoch 15/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.5401 - accuracy: 0.8413\n",
      "Epoch 16/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.5375 - accuracy: 0.8387\n",
      "Epoch 17/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.5318 - accuracy: 0.8440\n",
      "Epoch 18/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.5395 - accuracy: 0.8493\n",
      "Epoch 19/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.5161 - accuracy: 0.8520\n",
      "Epoch 20/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.5050 - accuracy: 0.8533\n",
      "Epoch 21/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.5088 - accuracy: 0.8453\n",
      "Epoch 22/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.5080 - accuracy: 0.8573\n",
      "Epoch 23/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4960 - accuracy: 0.8587\n",
      "Epoch 24/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.5029 - accuracy: 0.8560\n",
      "Epoch 25/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4883 - accuracy: 0.8573\n",
      "Epoch 26/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4852 - accuracy: 0.8613\n",
      "Epoch 27/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4727 - accuracy: 0.8560\n",
      "Epoch 28/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4738 - accuracy: 0.8627\n",
      "Epoch 29/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4750 - accuracy: 0.8587\n",
      "Epoch 30/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4673 - accuracy: 0.8587\n",
      "Epoch 31/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4758 - accuracy: 0.8627\n",
      "Epoch 32/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4681 - accuracy: 0.8680\n",
      "Epoch 33/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4639 - accuracy: 0.8680\n",
      "Epoch 34/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.4573 - accuracy: 0.8640\n",
      "Epoch 35/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4552 - accuracy: 0.8680\n",
      "Epoch 36/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4540 - accuracy: 0.8680\n",
      "Epoch 37/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4511 - accuracy: 0.8600\n",
      "Epoch 38/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4463 - accuracy: 0.8667\n",
      "Epoch 39/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4479 - accuracy: 0.8587\n",
      "Epoch 40/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4418 - accuracy: 0.8587\n",
      "Epoch 41/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4419 - accuracy: 0.8747\n",
      "Epoch 42/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4403 - accuracy: 0.8680\n",
      "Epoch 43/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4414 - accuracy: 0.8667\n",
      "Epoch 44/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4387 - accuracy: 0.8667\n",
      "Epoch 45/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4447 - accuracy: 0.8600\n",
      "Epoch 46/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4335 - accuracy: 0.8827\n",
      "Epoch 47/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4275 - accuracy: 0.8733\n",
      "Epoch 48/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4249 - accuracy: 0.8760\n",
      "Epoch 49/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4325 - accuracy: 0.8693\n",
      "Epoch 50/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4334 - accuracy: 0.8600\n",
      "Epoch 51/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4237 - accuracy: 0.8720\n",
      "Epoch 52/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4223 - accuracy: 0.8693\n",
      "Epoch 53/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4252 - accuracy: 0.8707\n",
      "Epoch 54/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4201 - accuracy: 0.8800\n",
      "Epoch 55/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4246 - accuracy: 0.8720\n",
      "Epoch 56/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4221 - accuracy: 0.8760\n",
      "Epoch 57/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4271 - accuracy: 0.8720\n",
      "Epoch 58/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4220 - accuracy: 0.8720\n",
      "Epoch 59/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4203 - accuracy: 0.8800\n",
      "Epoch 60/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4164 - accuracy: 0.8813\n",
      "Epoch 61/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4180 - accuracy: 0.8813\n",
      "Epoch 62/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4109 - accuracy: 0.8707\n",
      "Epoch 63/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4084 - accuracy: 0.8747\n",
      "Epoch 64/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4047 - accuracy: 0.8747\n",
      "Epoch 65/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4030 - accuracy: 0.8853\n",
      "Epoch 66/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4087 - accuracy: 0.8760\n",
      "Epoch 67/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4041 - accuracy: 0.8813\n",
      "Epoch 68/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4030 - accuracy: 0.8787\n",
      "Epoch 69/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4039 - accuracy: 0.8787\n",
      "Epoch 70/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4033 - accuracy: 0.8720\n",
      "Epoch 71/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4008 - accuracy: 0.8747\n",
      "Epoch 72/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4026 - accuracy: 0.8800\n",
      "Epoch 73/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3990 - accuracy: 0.8920\n",
      "Epoch 74/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4028 - accuracy: 0.8773\n",
      "Epoch 75/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3973 - accuracy: 0.8813\n",
      "Epoch 76/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.4001 - accuracy: 0.8813\n",
      "Epoch 77/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3993 - accuracy: 0.8880\n",
      "Epoch 78/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3993 - accuracy: 0.8867\n",
      "Epoch 79/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3940 - accuracy: 0.8787\n",
      "Epoch 80/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.4035 - accuracy: 0.8733\n",
      "Epoch 81/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3926 - accuracy: 0.8813: 0s - loss: 0.4079 - accuracy: 0.87\n",
      "Epoch 82/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3916 - accuracy: 0.8787\n",
      "Epoch 83/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3942 - accuracy: 0.8813\n",
      "Epoch 84/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3933 - accuracy: 0.8773\n",
      "Epoch 85/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3891 - accuracy: 0.8800\n",
      "Epoch 86/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3903 - accuracy: 0.8760\n",
      "Epoch 87/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3868 - accuracy: 0.8787\n",
      "Epoch 88/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3876 - accuracy: 0.8787\n",
      "Epoch 89/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3871 - accuracy: 0.8787\n",
      "Epoch 90/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3848 - accuracy: 0.8773\n",
      "Epoch 91/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3831 - accuracy: 0.8773\n",
      "Epoch 92/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3821 - accuracy: 0.8907\n",
      "Epoch 93/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3890 - accuracy: 0.8747\n",
      "Epoch 94/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3843 - accuracy: 0.8773\n",
      "Epoch 95/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3815 - accuracy: 0.8787\n",
      "Epoch 96/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3845 - accuracy: 0.8760\n",
      "Epoch 97/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3855 - accuracy: 0.8787\n",
      "Epoch 98/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3909 - accuracy: 0.8680\n",
      "Epoch 99/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3881 - accuracy: 0.8693\n",
      "Epoch 100/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3801 - accuracy: 0.8787\n",
      "Epoch 101/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3792 - accuracy: 0.8760\n",
      "Epoch 102/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3814 - accuracy: 0.8867\n",
      "Epoch 103/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3804 - accuracy: 0.8773\n",
      "Epoch 104/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3802 - accuracy: 0.8827\n",
      "Epoch 105/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3868 - accuracy: 0.8760\n",
      "Epoch 106/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3895 - accuracy: 0.8773\n",
      "Epoch 107/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3920 - accuracy: 0.8667\n",
      "Epoch 108/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3963 - accuracy: 0.8667\n",
      "Epoch 109/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3858 - accuracy: 0.8747\n",
      "Epoch 110/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3748 - accuracy: 0.8773\n",
      "Epoch 111/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3784 - accuracy: 0.8707\n",
      "Epoch 112/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3740 - accuracy: 0.8840\n",
      "Epoch 113/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3705 - accuracy: 0.8787\n",
      "Epoch 114/500\n",
      "24/24 [==============================] - ETA: 0s - loss: 0.3815 - accuracy: 0.88 - 0s 3ms/step - loss: 0.3840 - accuracy: 0.8840\n",
      "Epoch 115/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3813 - accuracy: 0.8787\n",
      "Epoch 116/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3738 - accuracy: 0.8800\n",
      "Epoch 117/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3800 - accuracy: 0.8813\n",
      "Epoch 118/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3701 - accuracy: 0.8800\n",
      "Epoch 119/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3765 - accuracy: 0.8787\n",
      "Epoch 120/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3726 - accuracy: 0.8813\n",
      "Epoch 121/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3767 - accuracy: 0.8773\n",
      "Epoch 122/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3707 - accuracy: 0.8800\n",
      "Epoch 123/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3671 - accuracy: 0.8813\n",
      "Epoch 124/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3720 - accuracy: 0.8800\n",
      "Epoch 125/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3710 - accuracy: 0.8773\n",
      "Epoch 126/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3732 - accuracy: 0.8813\n",
      "Epoch 127/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3718 - accuracy: 0.8733\n",
      "Epoch 128/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3721 - accuracy: 0.8760\n",
      "Epoch 129/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3676 - accuracy: 0.8773\n",
      "Epoch 130/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3676 - accuracy: 0.8840\n",
      "Epoch 131/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3697 - accuracy: 0.8760\n",
      "Epoch 132/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3681 - accuracy: 0.8853\n",
      "Epoch 133/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3701 - accuracy: 0.8733\n",
      "Epoch 134/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3639 - accuracy: 0.8787\n",
      "Epoch 135/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3677 - accuracy: 0.8760\n",
      "Epoch 136/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3702 - accuracy: 0.8813\n",
      "Epoch 137/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3791 - accuracy: 0.8747\n",
      "Epoch 138/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3698 - accuracy: 0.8693\n",
      "Epoch 139/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3629 - accuracy: 0.8760\n",
      "Epoch 140/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3664 - accuracy: 0.8773\n",
      "Epoch 141/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3654 - accuracy: 0.8800\n",
      "Epoch 142/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3700 - accuracy: 0.8747\n",
      "Epoch 143/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3622 - accuracy: 0.8893\n",
      "Epoch 144/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3618 - accuracy: 0.8773\n",
      "Epoch 145/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3607 - accuracy: 0.8787\n",
      "Epoch 146/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3614 - accuracy: 0.8853\n",
      "Epoch 147/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3618 - accuracy: 0.8840\n",
      "Epoch 148/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3628 - accuracy: 0.8827\n",
      "Epoch 149/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3691 - accuracy: 0.8720\n",
      "Epoch 150/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3752 - accuracy: 0.8693\n",
      "Epoch 151/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3654 - accuracy: 0.8760\n",
      "Epoch 152/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3692 - accuracy: 0.8720\n",
      "Epoch 153/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3613 - accuracy: 0.8840\n",
      "Epoch 154/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3704 - accuracy: 0.8760\n",
      "Epoch 155/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3725 - accuracy: 0.8720\n",
      "Epoch 156/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3772 - accuracy: 0.8773\n",
      "Epoch 157/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3664 - accuracy: 0.8760\n",
      "Epoch 158/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3561 - accuracy: 0.8853\n",
      "Epoch 159/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3595 - accuracy: 0.8840\n",
      "Epoch 160/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3575 - accuracy: 0.8867\n",
      "Epoch 161/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3585 - accuracy: 0.8880\n",
      "Epoch 162/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3776 - accuracy: 0.8773\n",
      "Epoch 163/500\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3651 - accuracy: 0.8667\n",
      "Epoch 164/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3606 - accuracy: 0.8773\n",
      "Epoch 165/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3564 - accuracy: 0.8813\n",
      "Epoch 166/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3549 - accuracy: 0.8840\n",
      "Epoch 167/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3552 - accuracy: 0.8840\n",
      "Epoch 168/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3583 - accuracy: 0.8720\n",
      "Epoch 169/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3554 - accuracy: 0.8800\n",
      "Epoch 170/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3581 - accuracy: 0.8787\n",
      "Epoch 171/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3563 - accuracy: 0.8840\n",
      "Epoch 172/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3527 - accuracy: 0.8853\n",
      "Epoch 173/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3552 - accuracy: 0.8800\n",
      "Epoch 174/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3575 - accuracy: 0.8787\n",
      "Epoch 175/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3569 - accuracy: 0.8693\n",
      "Epoch 176/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3553 - accuracy: 0.8827\n",
      "Epoch 177/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3580 - accuracy: 0.8800\n",
      "Epoch 178/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3513 - accuracy: 0.8840\n",
      "Epoch 179/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3514 - accuracy: 0.8827\n",
      "Epoch 180/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3571 - accuracy: 0.8813\n",
      "Epoch 181/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3521 - accuracy: 0.8840\n",
      "Epoch 182/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3550 - accuracy: 0.8773\n",
      "Epoch 183/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3493 - accuracy: 0.8813\n",
      "Epoch 184/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3576 - accuracy: 0.8760\n",
      "Epoch 185/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3525 - accuracy: 0.8813\n",
      "Epoch 186/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3537 - accuracy: 0.8787\n",
      "Epoch 187/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3556 - accuracy: 0.8867\n",
      "Epoch 188/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3613 - accuracy: 0.8760\n",
      "Epoch 189/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3482 - accuracy: 0.8813\n",
      "Epoch 190/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3492 - accuracy: 0.8827\n",
      "Epoch 191/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3515 - accuracy: 0.8813\n",
      "Epoch 192/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3604 - accuracy: 0.8773\n",
      "Epoch 193/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3467 - accuracy: 0.8787\n",
      "Epoch 194/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3500 - accuracy: 0.8773\n",
      "Epoch 195/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3485 - accuracy: 0.8907\n",
      "Epoch 196/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3477 - accuracy: 0.8800\n",
      "Epoch 197/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3485 - accuracy: 0.8827\n",
      "Epoch 198/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3473 - accuracy: 0.8787\n",
      "Epoch 199/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3526 - accuracy: 0.8733\n",
      "Epoch 200/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3474 - accuracy: 0.8827\n",
      "Epoch 201/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3566 - accuracy: 0.8733\n",
      "Epoch 202/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3496 - accuracy: 0.8813\n",
      "Epoch 203/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3534 - accuracy: 0.8773\n",
      "Epoch 204/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3460 - accuracy: 0.8840\n",
      "Epoch 205/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3448 - accuracy: 0.8867\n",
      "Epoch 206/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3597 - accuracy: 0.8733\n",
      "Epoch 207/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3540 - accuracy: 0.8693\n",
      "Epoch 208/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3466 - accuracy: 0.8800\n",
      "Epoch 209/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3483 - accuracy: 0.8800\n",
      "Epoch 210/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3490 - accuracy: 0.8707\n",
      "Epoch 211/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3594 - accuracy: 0.8760\n",
      "Epoch 212/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3503 - accuracy: 0.8800\n",
      "Epoch 213/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3472 - accuracy: 0.8853\n",
      "Epoch 214/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3438 - accuracy: 0.8853\n",
      "Epoch 215/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3471 - accuracy: 0.8840\n",
      "Epoch 216/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3436 - accuracy: 0.8893\n",
      "Epoch 217/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3639 - accuracy: 0.8747\n",
      "Epoch 218/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3460 - accuracy: 0.8787\n",
      "Epoch 219/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3417 - accuracy: 0.8733\n",
      "Epoch 220/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3485 - accuracy: 0.8773\n",
      "Epoch 221/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3420 - accuracy: 0.8827\n",
      "Epoch 222/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3427 - accuracy: 0.8840\n",
      "Epoch 223/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3445 - accuracy: 0.8813\n",
      "Epoch 224/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3438 - accuracy: 0.8813\n",
      "Epoch 225/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3412 - accuracy: 0.8867\n",
      "Epoch 226/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3412 - accuracy: 0.8827\n",
      "Epoch 227/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3595 - accuracy: 0.8693\n",
      "Epoch 228/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3426 - accuracy: 0.8867\n",
      "Epoch 229/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3383 - accuracy: 0.8880\n",
      "Epoch 230/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3419 - accuracy: 0.8827\n",
      "Epoch 231/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3419 - accuracy: 0.8800\n",
      "Epoch 232/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3484 - accuracy: 0.8813\n",
      "Epoch 233/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3423 - accuracy: 0.8880\n",
      "Epoch 234/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3451 - accuracy: 0.8800\n",
      "Epoch 235/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3413 - accuracy: 0.8800\n",
      "Epoch 236/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3392 - accuracy: 0.8827\n",
      "Epoch 237/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3432 - accuracy: 0.8907\n",
      "Epoch 238/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3410 - accuracy: 0.8813\n",
      "Epoch 239/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3414 - accuracy: 0.8840\n",
      "Epoch 240/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3430 - accuracy: 0.8867\n",
      "Epoch 241/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3379 - accuracy: 0.8827\n",
      "Epoch 242/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3391 - accuracy: 0.8880\n",
      "Epoch 243/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3395 - accuracy: 0.8867\n",
      "Epoch 244/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3470 - accuracy: 0.8840\n",
      "Epoch 245/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3438 - accuracy: 0.8800\n",
      "Epoch 246/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3406 - accuracy: 0.8800\n",
      "Epoch 247/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3409 - accuracy: 0.8840\n",
      "Epoch 248/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3445 - accuracy: 0.8747\n",
      "Epoch 249/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3377 - accuracy: 0.8813\n",
      "Epoch 250/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3390 - accuracy: 0.8880\n",
      "Epoch 251/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3405 - accuracy: 0.8827\n",
      "Epoch 252/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3409 - accuracy: 0.8867\n",
      "Epoch 253/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3510 - accuracy: 0.8720\n",
      "Epoch 254/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3455 - accuracy: 0.8813\n",
      "Epoch 255/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3364 - accuracy: 0.8800\n",
      "Epoch 256/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3440 - accuracy: 0.8800\n",
      "Epoch 257/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3478 - accuracy: 0.8853\n",
      "Epoch 258/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3416 - accuracy: 0.8867\n",
      "Epoch 259/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3381 - accuracy: 0.8787\n",
      "Epoch 260/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3378 - accuracy: 0.8813\n",
      "Epoch 261/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3446 - accuracy: 0.8747\n",
      "Epoch 262/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3330 - accuracy: 0.8880\n",
      "Epoch 263/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3434 - accuracy: 0.8840\n",
      "Epoch 264/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3389 - accuracy: 0.8773\n",
      "Epoch 265/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3387 - accuracy: 0.8827\n",
      "Epoch 266/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3414 - accuracy: 0.8800\n",
      "Epoch 267/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3368 - accuracy: 0.8933\n",
      "Epoch 268/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3463 - accuracy: 0.8853\n",
      "Epoch 269/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3361 - accuracy: 0.8827\n",
      "Epoch 270/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3358 - accuracy: 0.8853\n",
      "Epoch 271/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3387 - accuracy: 0.8800\n",
      "Epoch 272/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3407 - accuracy: 0.8827\n",
      "Epoch 273/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3391 - accuracy: 0.8773\n",
      "Epoch 274/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3334 - accuracy: 0.8813\n",
      "Epoch 275/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3365 - accuracy: 0.8747\n",
      "Epoch 276/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3450 - accuracy: 0.8733\n",
      "Epoch 277/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3449 - accuracy: 0.8773\n",
      "Epoch 278/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3414 - accuracy: 0.8733\n",
      "Epoch 279/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3365 - accuracy: 0.8800\n",
      "Epoch 280/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3504 - accuracy: 0.8707\n",
      "Epoch 281/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3346 - accuracy: 0.8880\n",
      "Epoch 282/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3366 - accuracy: 0.8840\n",
      "Epoch 283/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3356 - accuracy: 0.8840\n",
      "Epoch 284/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3316 - accuracy: 0.8800\n",
      "Epoch 285/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3330 - accuracy: 0.8840\n",
      "Epoch 286/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3415 - accuracy: 0.8773\n",
      "Epoch 287/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3331 - accuracy: 0.8893\n",
      "Epoch 288/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3315 - accuracy: 0.8813\n",
      "Epoch 289/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3381 - accuracy: 0.8827\n",
      "Epoch 290/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3343 - accuracy: 0.8760\n",
      "Epoch 291/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3379 - accuracy: 0.8853\n",
      "Epoch 292/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3310 - accuracy: 0.8827\n",
      "Epoch 293/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3358 - accuracy: 0.8813\n",
      "Epoch 294/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3342 - accuracy: 0.8907\n",
      "Epoch 295/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3325 - accuracy: 0.8787\n",
      "Epoch 296/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3348 - accuracy: 0.8840\n",
      "Epoch 297/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3359 - accuracy: 0.8827\n",
      "Epoch 298/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3330 - accuracy: 0.8840\n",
      "Epoch 299/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3368 - accuracy: 0.8893\n",
      "Epoch 300/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3310 - accuracy: 0.8853\n",
      "Epoch 301/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3348 - accuracy: 0.8733\n",
      "Epoch 302/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3285 - accuracy: 0.8827\n",
      "Epoch 303/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3377 - accuracy: 0.8840\n",
      "Epoch 304/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3397 - accuracy: 0.8813\n",
      "Epoch 305/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3312 - accuracy: 0.8773\n",
      "Epoch 306/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3399 - accuracy: 0.8787\n",
      "Epoch 307/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3398 - accuracy: 0.8813\n",
      "Epoch 308/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3377 - accuracy: 0.8787\n",
      "Epoch 309/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3330 - accuracy: 0.8907\n",
      "Epoch 310/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3348 - accuracy: 0.8787\n",
      "Epoch 311/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3331 - accuracy: 0.8760\n",
      "Epoch 312/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3323 - accuracy: 0.8827\n",
      "Epoch 313/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3310 - accuracy: 0.8787\n",
      "Epoch 314/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3282 - accuracy: 0.8907\n",
      "Epoch 315/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3370 - accuracy: 0.8840\n",
      "Epoch 316/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3317 - accuracy: 0.8773\n",
      "Epoch 317/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3356 - accuracy: 0.8800\n",
      "Epoch 318/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3403 - accuracy: 0.8893\n",
      "Epoch 319/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3298 - accuracy: 0.8840\n",
      "Epoch 320/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3310 - accuracy: 0.8800\n",
      "Epoch 321/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3334 - accuracy: 0.8840\n",
      "Epoch 322/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3266 - accuracy: 0.8867\n",
      "Epoch 323/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3377 - accuracy: 0.8720\n",
      "Epoch 324/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3302 - accuracy: 0.8853\n",
      "Epoch 325/500\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3305 - accuracy: 0.8893\n",
      "Epoch 326/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.3279 - accuracy: 0.8827\n",
      "Epoch 327/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3296 - accuracy: 0.8813\n",
      "Epoch 328/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3310 - accuracy: 0.8773\n",
      "Epoch 329/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3321 - accuracy: 0.8827\n",
      "Epoch 330/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3351 - accuracy: 0.8840\n",
      "Epoch 331/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3366 - accuracy: 0.8800\n",
      "Epoch 332/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3283 - accuracy: 0.8840\n",
      "Epoch 333/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3281 - accuracy: 0.8827\n",
      "Epoch 334/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3282 - accuracy: 0.8867: 0s - loss: 0.3342 - accuracy: 0.88\n",
      "Epoch 335/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3296 - accuracy: 0.8760\n",
      "Epoch 336/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.3293 - accuracy: 0.8853\n",
      "Epoch 337/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3394 - accuracy: 0.8707\n",
      "Epoch 338/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3387 - accuracy: 0.8667\n",
      "Epoch 339/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3447 - accuracy: 0.8760\n",
      "Epoch 340/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3313 - accuracy: 0.8827\n",
      "Epoch 341/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3282 - accuracy: 0.8827\n",
      "Epoch 342/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3352 - accuracy: 0.8853\n",
      "Epoch 343/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.3272 - accuracy: 0.8827\n",
      "Epoch 344/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3288 - accuracy: 0.8827: 0s - loss: 0.3526 - accuracy: 0.87\n",
      "Epoch 345/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3303 - accuracy: 0.8840\n",
      "Epoch 346/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3330 - accuracy: 0.8800\n",
      "Epoch 347/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3291 - accuracy: 0.8760\n",
      "Epoch 348/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3331 - accuracy: 0.8853\n",
      "Epoch 349/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3281 - accuracy: 0.8813\n",
      "Epoch 350/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3360 - accuracy: 0.8773\n",
      "Epoch 351/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3281 - accuracy: 0.8840\n",
      "Epoch 352/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3317 - accuracy: 0.8800\n",
      "Epoch 353/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3343 - accuracy: 0.8787\n",
      "Epoch 354/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3280 - accuracy: 0.8800\n",
      "Epoch 355/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3265 - accuracy: 0.8853\n",
      "Epoch 356/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3326 - accuracy: 0.8733\n",
      "Epoch 357/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3333 - accuracy: 0.8840\n",
      "Epoch 358/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3274 - accuracy: 0.8867\n",
      "Epoch 359/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3379 - accuracy: 0.8827\n",
      "Epoch 360/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3276 - accuracy: 0.8747\n",
      "Epoch 361/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3244 - accuracy: 0.8813\n",
      "Epoch 362/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3279 - accuracy: 0.8773\n",
      "Epoch 363/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3266 - accuracy: 0.8867\n",
      "Epoch 364/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.3232 - accuracy: 0.8773\n",
      "Epoch 365/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3306 - accuracy: 0.8787\n",
      "Epoch 366/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3313 - accuracy: 0.8773\n",
      "Epoch 367/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3314 - accuracy: 0.8787\n",
      "Epoch 368/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3289 - accuracy: 0.8800\n",
      "Epoch 369/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3230 - accuracy: 0.8880\n",
      "Epoch 370/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3234 - accuracy: 0.8827\n",
      "Epoch 371/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3295 - accuracy: 0.8760\n",
      "Epoch 372/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3241 - accuracy: 0.8907\n",
      "Epoch 373/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3286 - accuracy: 0.8787\n",
      "Epoch 374/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3303 - accuracy: 0.8840\n",
      "Epoch 375/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3242 - accuracy: 0.8787\n",
      "Epoch 376/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3272 - accuracy: 0.8800\n",
      "Epoch 377/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3370 - accuracy: 0.8853\n",
      "Epoch 378/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3255 - accuracy: 0.8867\n",
      "Epoch 379/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3218 - accuracy: 0.8867\n",
      "Epoch 380/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3308 - accuracy: 0.8707\n",
      "Epoch 381/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3286 - accuracy: 0.8893\n",
      "Epoch 382/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3297 - accuracy: 0.8747\n",
      "Epoch 383/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3304 - accuracy: 0.8827\n",
      "Epoch 384/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3393 - accuracy: 0.8760\n",
      "Epoch 385/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3285 - accuracy: 0.8760\n",
      "Epoch 386/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3298 - accuracy: 0.8813\n",
      "Epoch 387/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3258 - accuracy: 0.8893\n",
      "Epoch 388/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3224 - accuracy: 0.8800\n",
      "Epoch 389/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3241 - accuracy: 0.8827\n",
      "Epoch 390/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3237 - accuracy: 0.8787\n",
      "Epoch 391/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3294 - accuracy: 0.8827\n",
      "Epoch 392/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3293 - accuracy: 0.8827\n",
      "Epoch 393/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3245 - accuracy: 0.8867: 0s - loss: 0.3270 - accuracy: 0.88\n",
      "Epoch 394/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3221 - accuracy: 0.8840\n",
      "Epoch 395/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3207 - accuracy: 0.8907\n",
      "Epoch 396/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3315 - accuracy: 0.8813\n",
      "Epoch 397/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3246 - accuracy: 0.8920\n",
      "Epoch 398/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3313 - accuracy: 0.8853\n",
      "Epoch 399/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3284 - accuracy: 0.8773\n",
      "Epoch 400/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3223 - accuracy: 0.8880\n",
      "Epoch 401/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3246 - accuracy: 0.8853\n",
      "Epoch 402/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3265 - accuracy: 0.8747\n",
      "Epoch 403/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3231 - accuracy: 0.8827\n",
      "Epoch 404/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3284 - accuracy: 0.8720\n",
      "Epoch 405/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3294 - accuracy: 0.8800\n",
      "Epoch 406/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3326 - accuracy: 0.8880\n",
      "Epoch 407/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3238 - accuracy: 0.8800\n",
      "Epoch 408/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3222 - accuracy: 0.8760\n",
      "Epoch 409/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3252 - accuracy: 0.8800\n",
      "Epoch 410/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3221 - accuracy: 0.8773\n",
      "Epoch 411/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3254 - accuracy: 0.8800\n",
      "Epoch 412/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3295 - accuracy: 0.8800\n",
      "Epoch 413/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3253 - accuracy: 0.8733\n",
      "Epoch 414/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3202 - accuracy: 0.8787\n",
      "Epoch 415/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3223 - accuracy: 0.8867\n",
      "Epoch 416/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3296 - accuracy: 0.8827\n",
      "Epoch 417/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3226 - accuracy: 0.8840\n",
      "Epoch 418/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3246 - accuracy: 0.8773\n",
      "Epoch 419/500\n",
      "24/24 [==============================] - 0s 6ms/step - loss: 0.3259 - accuracy: 0.8773\n",
      "Epoch 420/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3332 - accuracy: 0.8773\n",
      "Epoch 421/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3252 - accuracy: 0.8840\n",
      "Epoch 422/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3269 - accuracy: 0.8853\n",
      "Epoch 423/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3229 - accuracy: 0.8840\n",
      "Epoch 424/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3243 - accuracy: 0.8787\n",
      "Epoch 425/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3264 - accuracy: 0.8827\n",
      "Epoch 426/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3343 - accuracy: 0.8827\n",
      "Epoch 427/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3257 - accuracy: 0.8667\n",
      "Epoch 428/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3314 - accuracy: 0.8840: 0s - loss: 0.3305 - accuracy: 0.88\n",
      "Epoch 429/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3242 - accuracy: 0.8760\n",
      "Epoch 430/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3257 - accuracy: 0.8787\n",
      "Epoch 431/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3207 - accuracy: 0.8800\n",
      "Epoch 432/500\n",
      "24/24 [==============================] - 0s 6ms/step - loss: 0.3228 - accuracy: 0.8853\n",
      "Epoch 433/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3347 - accuracy: 0.8773\n",
      "Epoch 434/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3230 - accuracy: 0.8800\n",
      "Epoch 435/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3280 - accuracy: 0.8747\n",
      "Epoch 436/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3324 - accuracy: 0.8787\n",
      "Epoch 437/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.3299 - accuracy: 0.8800\n",
      "Epoch 438/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.3409 - accuracy: 0.8693\n",
      "Epoch 439/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.3221 - accuracy: 0.8840\n",
      "Epoch 440/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3182 - accuracy: 0.8840\n",
      "Epoch 441/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3232 - accuracy: 0.8853\n",
      "Epoch 442/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3282 - accuracy: 0.8813\n",
      "Epoch 443/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3183 - accuracy: 0.8867\n",
      "Epoch 444/500\n",
      "24/24 [==============================] - 0s 10ms/step - loss: 0.3197 - accuracy: 0.8827\n",
      "Epoch 445/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.3250 - accuracy: 0.8787\n",
      "Epoch 446/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.3228 - accuracy: 0.8773: 0s - loss: 0.3213 - accuracy: 0.87\n",
      "Epoch 447/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3200 - accuracy: 0.8853\n",
      "Epoch 448/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3194 - accuracy: 0.8787\n",
      "Epoch 449/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3226 - accuracy: 0.8800\n",
      "Epoch 450/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3198 - accuracy: 0.8800\n",
      "Epoch 451/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3228 - accuracy: 0.8880\n",
      "Epoch 452/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3217 - accuracy: 0.8787\n",
      "Epoch 453/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3185 - accuracy: 0.8840\n",
      "Epoch 454/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3186 - accuracy: 0.8853\n",
      "Epoch 455/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3227 - accuracy: 0.8867\n",
      "Epoch 456/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3245 - accuracy: 0.8827\n",
      "Epoch 457/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3242 - accuracy: 0.8800\n",
      "Epoch 458/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3234 - accuracy: 0.8813\n",
      "Epoch 459/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3258 - accuracy: 0.8720\n",
      "Epoch 460/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3207 - accuracy: 0.8800\n",
      "Epoch 461/500\n",
      "24/24 [==============================] - 0s 5ms/step - loss: 0.3213 - accuracy: 0.8840\n",
      "Epoch 462/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3169 - accuracy: 0.8827\n",
      "Epoch 463/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3173 - accuracy: 0.8840\n",
      "Epoch 464/500\n",
      "24/24 [==============================] - ETA: 0s - loss: 0.3070 - accuracy: 0.88 - 0s 3ms/step - loss: 0.3154 - accuracy: 0.8853\n",
      "Epoch 465/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3184 - accuracy: 0.8787\n",
      "Epoch 466/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3223 - accuracy: 0.8800\n",
      "Epoch 467/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3219 - accuracy: 0.8773\n",
      "Epoch 468/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3132 - accuracy: 0.8880\n",
      "Epoch 469/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3196 - accuracy: 0.8880\n",
      "Epoch 470/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3324 - accuracy: 0.8747\n",
      "Epoch 471/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3302 - accuracy: 0.8813\n",
      "Epoch 472/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3244 - accuracy: 0.8827\n",
      "Epoch 473/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3184 - accuracy: 0.8827\n",
      "Epoch 474/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3300 - accuracy: 0.8733\n",
      "Epoch 475/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3207 - accuracy: 0.8747\n",
      "Epoch 476/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3196 - accuracy: 0.8747\n",
      "Epoch 477/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3198 - accuracy: 0.8893\n",
      "Epoch 478/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3211 - accuracy: 0.8840\n",
      "Epoch 479/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3272 - accuracy: 0.8760\n",
      "Epoch 480/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3200 - accuracy: 0.8867\n",
      "Epoch 481/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3283 - accuracy: 0.8760\n",
      "Epoch 482/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3172 - accuracy: 0.8840\n",
      "Epoch 483/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3171 - accuracy: 0.8813\n",
      "Epoch 484/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3204 - accuracy: 0.8840\n",
      "Epoch 485/500\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3198 - accuracy: 0.8800\n",
      "Epoch 486/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3144 - accuracy: 0.8893\n",
      "Epoch 487/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3176 - accuracy: 0.8800\n",
      "Epoch 488/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3171 - accuracy: 0.8773\n",
      "Epoch 489/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3150 - accuracy: 0.8853\n",
      "Epoch 490/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3228 - accuracy: 0.8773\n",
      "Epoch 491/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3240 - accuracy: 0.8800\n",
      "Epoch 492/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3165 - accuracy: 0.8827\n",
      "Epoch 493/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3178 - accuracy: 0.8840\n",
      "Epoch 494/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3232 - accuracy: 0.8787\n",
      "Epoch 495/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3196 - accuracy: 0.8813\n",
      "Epoch 496/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3227 - accuracy: 0.8747\n",
      "Epoch 497/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3199 - accuracy: 0.8733\n",
      "Epoch 498/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3166 - accuracy: 0.8813\n",
      "Epoch 499/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.3143 - accuracy: 0.8813\n",
      "Epoch 500/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.3164 - accuracy: 0.8840\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\anaconda\\lib\\site-packages\\ipykernel_launcher.py:45: UserWarning: The following kwargs were not used by contour: 'levals'\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEXCAYAAABcRGizAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOydd3hc1Z2/3zt91HtvlmTLlmzLcm9gg+mhp0B2UwhJgF82m+ymkbYhIZtk00hl00g2CWmEAKHbGGMbG/duNdvqvXfNSNPu74+RrnQ1I82oj+TzPg88vnduOVN0Pvd8qyTLMgKBQCAQTIRmvgcgEAgEgsBHiIVAIBAIfCLEQiAQCAQ+EWIhEAgEAp8IsRAIBAKBT4RYCAQCgcAnAScWkiSZJEn6uSRJ5ZIkVUqS9NH5HpNAIBBc7QScWABfAZ6TZTkLeDfwhCRJN8zzmAQCgeCqJqDEQpIkI9Aky/J+AFmWzwB/Ae6d14EJBALBVY5uvgcwBifwuzH77MDgPIxFIBAIBEMElFjIsuwAHGN27wQ+PPejEQgEAsEwAWWGGoskSfcDL8myfHa+xyIQCARXMwG1shiNJElLgGuAT47z+kPAQwDBwcHrli5dOoejEwgEgoXPuXPn2mRZjvXnWCkQq85KkhQJfAn48pBpakIKCgrkAwcOzPq4BAKBYDERERFxWpbl9f4cG3BmKEmSTMBXga8PC4UkSZGSJEnzOzKBQCC4egk4sQC+D/xYlmULgCRJGuA7ciAugQQCgeAqIaB8FpIkvRt4BPjIqIWEHqiarzEJBAKBIMDEQpbl53CLg0AgEAgCiEA0QwkEAoEgwBBiIRAIBAKfCLEQCAQCgU+EWAgEAoHAJ0IsBAKBQOATIRYCgUAg8IkQC4FAIBD4RIiFQCAQCHwixEIgEAgEPhFiIRAIBAKfCLEQCAQCgU+EWAgEAoHAJ0IsBAKBQOATIRYCgUAg8IkQC4FAIBD4RIiFQCAQCHwSUM2PBFcfz0fe67Hv3s7n52EkAoFgIsTKQiAQCAQ+EWIhEAgEAp8IsRAIBAKBT4TPQjAnjOebEP4JgWBhIFYWAoFAIPCJEAuBQCAQ+ESYoa5ixpqGhElIIBCMhxALgWAGEQIsWKwIsRDMCWLSFAgWNsJnIRAIBAKfCLEQCAQCgU+EGeoqZjqmIWGb9474HASLFSEWixxRqE8gEMwEwgwlEAgEAp+IlYVgQSNWTgLB3CDEQjBj+PJjiIldIFi4CLFY5MzWZDyT1xUiIhAEPsJnIRAIBAKfCLEQCAQCgU+EGUowZ9zb+bxXk9N0rzkbiDwSgUCNEAvBjBGoE6qY+AWC6SPMUIJ5x1vHvJlegYy99vB/AoHAP8TKQiAIIMQqSBCoCLEQzCi+wmBnc/KbyYl2KudONgRYCINgISHEQjAuV0v+g5i0BQLfCLEQBAwzWQV3Nu81GYbHJQRIsNARYiFYtCw0B/bzkfcKUREELEIsAoDZMINcLaaVQBKE0Z/xTI1rJkyBV4s5UTC7CLEQjIu3yW/0xONtwpnqJDTX4jbaPDRfE+dsJCkKBLOFEAuBgJkRKzHxCxYzQiwEPllIk6C3SX4q458J040w9QgWE0IsFilzMVFNFOkzV3byyd470IRPCIpgoSDEIgBYDBPGZCZhbyafsZO5r+vNpJnI37FP1lQ1E2GzM+HXWAy/L8H8E5BiIUmSBvgtcFCW5d/P83AEM8R8PtXP1r0DbaUiEMwWAScWkiQZgf8BCoCD8zycRU8ghNgG8oQ7G+GwAsFCJODEArgF+DYQOd8DWYxMZcKbakXYuawkO5f3mGv8FfBAEH7B4iXgxEKW5RcBJEma76EsWGZ70pjJ/Irp3ncmruevX8Df+/tznEiUEyw0Ak4sBIuX8SZDb+LmbTKdqghONRLKn+uLCd47gwMO/vSbs5Rdaic9M4IPPrSW4BDDfA9LMA2EWAgmVUbb1/Ezff5MslCyy+ea2Xh/r79wifOnGgEoPt/CS38v5v0Prpn2dQXzx4IVC0mSHgIeAkhNTZ3n0Qimw3hhs758Ht5Kj0x1ogt0AZhoQg9EP01Hu1W13TlmW7DwWLBiIcvyr4FfAxQUFMjzPJyAYqKJby4nxYkmsbl6Wg+UVcFMT+izkYcy9trTuca6zUmcP9WAPPSXuXZT8pSvJQgMFqxYCDyZaAIJ9CfnQMSfCT5QxCjQyF+fxL89upXKKx2kLYlgxaq4+R6SYJoIsbgKmcwENxuVUSeTMT2bZTqmKq4zNZbFLizLVsSwbEXMfA9DMEMEnFhI7pjZDwLXASmSJJXKsnxsnod1VbOQJjVfE/lUS3ssFKbyXQVq3SxBYBFwYiHLsgz8ceg/wRCzae5YqK0/F9J4/Sl4OFMVcydLIEWsCQKXgBMLweziy+k81WxhmJ1IJH+d5ONdYy6ihuZ6YhUTuWA+EGKxiJjNSUSYKAKHsStB4WQXzAVCLAQeBKowTGRbn4sxz/UkHKjfg+DqRIjFAmUyZqD5mnSmaqefrfsHQs/rmTID+rqWQDDTCLEIIOZjIp0oK3ou7jub95vs5LvYGe/3JT4jgT8IsZgnFoOdeS6q2U503EyUWx/vOjO5CpmrFcBC/A0JFg5CLARTYj6d6VfrpDgf/UEEgmGEWCwQJgoB9TV5TjekdTyH8mKYtCfy/UxkMguUGlNzkWkuEIAQi4BipkpoT+b6gV69dCImI6CB/N4Wg+gKFj9CLAQKYtKaHv46kP0ptT5b+COi4ncg8IYQi3liIf1BzlTk1Ey2JZ3OOKaCS6PBpdGic9hV9wyEWkxzOeELcbl6EWKxAJmq6Wi6EViBkKfgD9OZwL2R+cbPefrXZ7HbnMTXlrH87GFGd4ify89kuhPzQvj+BIGJEIsFznSKzy0WJ/VYJlszaiJkWebPT7mFAqA5NZvYhmpimmunP1AfzEQDI4F/uFwyLz5TRNG5ZuKTQrn/I/mEhhnne1gBhRCLRchkVgDzJRjeTDG+ah6Nfm2q95ssLqeMbdCp2ufU6f06dyq+iECpRHu1cfitKvbvrgCgpakfjUbio/++YZ5HFVgIsRD4zVQnKW8TXnfnALXVXeOeM2B1+HXtY2/XTGlM4+HtPV7/y2+y77VyABKSQnngl9/BbPZPMCYiECK2FuPKciq0NvWptlvGbAuEWCw6FsJTZ31NNz/9zhGsFjs7xznmxWeKmGg6Hvs+D9z5AAA7X/r9DIxQzV335ZGXn8BLH/4ZHe0pfPs9V8gsOU14Z2tATLa+fFgLOTx6pnC5ZLo6rQQFGTCZPae9vDXxvP1mpdIzfFVBwhyPMPARYrHImeunV38mz4N7K7Fa7BMe09rcT9IU7m/4zbe4/T0rpnDm+DwfeS+DRjM1u+7FNWSCurjpBja9+Rww9c94Nr6L2UrQnKnz5wO7zckvnzjOlZI2DAYtH/7EOg8xWL4yjk98fgvFF5qJTwxly460eRpt4CLEQuCV6ST6+cJg1Po8ZtXaBNq97B9vXBqNxLK8GG68falfY6it6sLSbydzaRR6g+/xDASFKEIB4DAYGTQHTTg2p0bLe9uf9Ws802Ex1BmbDQYHHPzhl2coLWzBYXcBYLM5+d3PTpK6JII735tL9vJo5ficvFhy8mLna7izSkRExLSvIcQiwJnpiWCmHaZTGd9Nty/lclEbTQ29nP3wI3zic5tJTAlTHbPjxkxOv/ZTaqq6yMqJpmzXv014zR/97nbc7dt989oLpez+52UAUjPC+dSXt2E06pTxe/s8gnu7MFj7sZmDATD192Du7/V6fWtQCBc33YAlNIKaxw/xyGc2ERxi8Gtso5mpEOmx17pa2PPSZQrPNnnsdzplqso6+dWPjvGNJ24kKHhy341t0MHFM01odRpWr0tEo/HvdzdbzIQQ+IMQiwDhano6DIsw8cVv7aSna4CQMCM6ncbrceu2pLBuSwoAZT6u6a9QOJ0u3njpirJdW9XNxTNNrB+6z3joHHYK3nmdusw8kGVSywvRutxRUmO/u/Lc9VhC3X/A1eWd7H7xMve8P48De8qpre5m6fIYtu5M92u8M8liE5HW5n7+8fRF+noH2XZdhsdn2tM1MOH5gwNODuyp4LZ7l/u8l8sl09cziMGo5effPUpNpTs4Y2VBAh//9Aa/f3+T5fTp06rtXbt2zcp9/EGIxSIikAr++RI/jUYiIso8l0MC3KKi1Wlw2UbCYfV632YoALOlj0cPPerzOIdeHZ9v7bex+8VLymrm9NH6SYx4bliIQvLUT07QWO9e3f3t/84TnxhCVs6IWWndlhROHa3H5XJ7rYND9Vj6HchD2wAH3vAtFp0dVp783lFaGvsICzfS0z2ovFZ4tonOditRMUETXME3p0+fnlch8AchFgKvzFYETXVFJ+2tFrJzogmLME35OteV/Zmq8k7iEoJJTgv3+zyNRuK+B1bz19+ew+mUyV+fyKq1amfndMtxJFeV0BUdDxoNeoOWrTvTefkfpapjrpS28eEAn4wDGVmWaWpQmwGbGnoVsXC5ZDrbrazbnIzL5eLsiUb6ez2DKrRa76va0bz+wiVaGt2htKOFAkCjlTCaJp5G169fr9ouK/O1Tg5MhFgIvOLPRDnZJ89D+yp59o8XAQgJNfDZx64hOjbYr3O93Ssyemork43bUllVkMDggGNWVjexjTWse/sVVvzlMTKyIolLCCE1PZzySyMu+5RJCBz4H3G1UEqyTBdJkli+Mo6Siy0A6A1asketKv75tyIO7HEn2UkakF2e19BqJd7zgZU+79XealFtx8YH095mQavV8L4PrVL5o+bKfzAfCLEIEKZblmIm7z1bzYfeer1c+Xdfr43jh2u57R7f9uLZwBykxxw0cWLddD770J4ONm5LVbbveO8KZKCuqovUHzxB90sw+uozVafLm9nx+ch7A6IXx0zz4L+vZ99rZfT12ti0LZX4pFDltQunRxzbssstJsMlW1LSw/ngQwVYLXaqK7q4cLqR1esSvd6jv89GVXnHyLVkmWdf/g61TWeQZZnfPit7PW8xIsRiARKIT44ul0xv9yAhoQa0Oo3XCWlsMpRpBrKgvWG3Ofn9L05TfL6ZuMQQPvapDcTGh8zY9QesDrQ6id7uQS6ebSJr78/JX5/ksyrvu4fNWz94YsbGMhUWSzCF0ajjtnuW01jXQ111NyazThGM2PggOtpGVgQ33bkUS58Ng0HHdbdk0tU5wP/+4JhSysUc2URwlFtgnnhi5PuJCk/n9p3fVLYlSaLf2o7sbaniBYM+CIM+mD5LG7CwhUWIxSJkvA5v0+m2N9Ex3V0DPPndozQ19GK09rP66BsE93V7nHffA/n85sfH6e2xkZMXy/brM8Ydz2TGNZb9eyq4eMb9h99Y18vf/3CRf/vCFmRZpqPNitGkRavVUF/TQ3Rs0KTMWX//wwUOv1WFViuh02kYHJpsdt6cOelxTpeZNDktVMEoPt/Mb35yAqdTRqfX8MhnN7NsRQz/8rEC/vrbczQ39jI46OSNFy+Tkh7Od356Hza7hfyce8hffo9yndZ6Hb/6vaeId/c10tPXTFhIPAB9lla6exv8GltG0ia2rX0IrVZPQ8tF3jr2BC7Z6fvEAEWIxSJkJvMm/OGNly4rzsZBczAVuetZdWKfx3EZWZF88yc3MzjomJHaSuPR2zPose1yyTzx+CFqKruQJPcqx2pxoNdrePDfN5CXH+/zupeLWzn8VhXgjtV3Okf+8I+9XcP3AtBfEGjjmWkO7avC6XQ/sTvsLr7+pd9wuc6dWd/eMsi7dnwDjcY9zVWWdbI5/0HePvVzLAPqumTWUdsmYxg7N3yK6MhMWtov89bxJ8hOuxZJkigp34PDqf59jcem/A+j1bp/50lxq8hI2UxF7TvTfs/zhRCLq4jZmjhstjFVWbXjh6JqNBJms54rpW08/asz9PfZufaGjBkdz6qCBA7urVBW/fGJIbz8j2IlNl6WwWpxFyq02128/sIlv8RiouKGYeGBUc56MdaBGptrACP5BtvXPkxm6jZlf0dnsxJtdPP2ryhCMUxk2FDeTvUBYqOySE/aSF9/C0fOPqUcszb3fcRFLwMgMTaX5Utu4MTFpyc97rH31mpm7wFpLhBiEWD4Yx4az2QwmyuKicwUO27M5MLpRqwWB5LTSWpZkc/7/f7JU/T22ADY91o5q+KSiW6ZmfyDpvpelXn4UlEr6ZnjR6n4m4G7fGUsKenh1FW7TWwJyaG0t1oIjzDyoUfWeT1nMt+fvywWEfDGZKOJzhQ/S2R4OpFhKXR0VXOu9AX0OhOhwQkYDZ5+qobWQgBkZI6cfUolEsOYjepINZMxzOMYfzhb8g82rPwXJElDR3cNVfXHpnSdQEGIxSLBl81/JsuLjyUlPZwvfes6/r71UYJ7uzFbRuLfvZ3vdLro67Wp9q1+6vNsumZyxdsGh8ou6PUaVq0dKbug1aknf53O/XrJxVbVPofDhTlIx1335fp1P4NRx398ZRulha2YzDqW5c5eHaGpOqFnI+R5pnj88cdV26Mdyb4IDY7HoA+io7ta5Vy2DHTw8v4vo9MacDhthAYncPvOxwkyRWJ3DCDLMpIkIcsydU3nOHnxT6rrhgTFsnXNRwkOiqay7hjnSp+jrOZtEuNWoZE0uFxOymsOTen9lla8QWNrISZDGG1dFTidNt8nBTBCLOaBuciWnazDerpPqxFRZmKa6/w6VqvVsOmaNKUXRXiEiRWr4yZ1P5vNyU++9Y7ylJ+/PlFpVrNxWyqnj9VTVtqulCxveRqlHHr717/I/R9ZjaXPTliEyWcI7WgMRt24YZawMLrbzXZW/0xnI+dl38a6vPsBaGwtZt/R73s4ih1DE/GqZbcTZIoEQK8z0dx2ifqWC7R2ltHcpk6MBLhm3f8jNiobgNU5d9HZU0t1wwn6D/03MRFLaO0so72rcspj7+5toBv/HOKBjhCLGWauwxIXqkni/o/kk5MXQ8mFFqJig7Db/AtFHKbySociFADnTzXS1WElIsqM3qDlk49upb3VwiEv/S0+/umNAISGTT2DfK6Zy+95ooeZuU4600haCla8V9lOjM0lJaGAmsZTfp0fFhJPfIz7fJfLic1u4Z2zv6a++TwAocHqh5TQYLfvqq2zjLbOhZlpPVsIsZgBZvIPeb5MBNM1V42+hj9oNBKlha2ceMe9Gjm0r4ovfGOH32GsY1cDWp0G46g8Do1GIjbee3b47hcvccO7lo5bwHAyLJacBfDuSB5mvjKTZfwvEglQeOUVkuJWEWSKxGa3YDaNjFuj0WIyhnLNuk/wzGuPICNT03iKZRnXA+B02hQREXgixGIBMFmz1XQmrLma7GRZ5uSREbNVf6+N4gvNbLsuw6/z05ZEcOvdOex5+TI6rYb7HliN2aynraWfkostRMcEkTtOhJPlgS/xEnP3Xl0umcqyDjQaiSXZUXNyT19MNPn/Trp+DkcyMSZjGJKkFnWb3TLO0dDT18SL+x4lIiyNrNTtLMvY6XGMQW8mLnoZze2XOH7+D3R01xBsjqam8RSdPTPTpnfl0ttJiV9Dd28Dp4r+gt0xcQXchcCUxUKSpCXAU8AS4J/Al2VZHhh67YQsyxtnZoiLj5mYpCZaASyEp11JkgiPMNHZblX2hUeOmIWcThcVVzowGnWkLfE+sd16Tw433bkUSZLQaCSaG3r54eOHlBDXW+/OmdLYJhLnzg4rr79wiQGrgx03LfF5LVmW+d3PTyrlJzZuT+UDHy/weuxUeo34uyJ8UH7L51gDEZfLjkt2oRklGL4mXrtjgDXL7yExNm/cY3Zt+TyvHnyM7t56LlfN7GeTnXYta3PfB0Bc9DK0Wj2Hz/xqRu8xH0xnZfG/uMvbHAP+HdgnSdItsiz3woTtk68KAnGCng4zIUAul8zLzxZTeNZdhuP+B1bz3F+K6OsZZOvOdFaucVd/dTpc/OKHx7hc3AbAdbdkcs/7vRd8G1019MzxBlUuxN5XruAY6s2dmhFO1k9/Mukxj0aWZf73e0dpHqpAWny+mYKgEMyWvnHPqa3qVtUpOnG4lpvuWEpcgvfyI5MJYY6IiODBoRWCt9WAPwIx1fPmikFbHyVlr5ObfSuSpKGkfA/tXRUex2k0egpWvIfo8HRaOso8hOJU4V9Ym3sfGo07B0inNZAQs4LuXne4tkEfjN1uRWZyvjNvRIWr+2pEhs9975LZYDpiES/L8pND/35AkqQv4RaMG1noRVAWIBM9YQaKE/yd/VXse81dTLC5sQ8J+Or/eE5Wl0vaFKEA2L+7gpvuWOaz21zomMQ4h2PkD7+2qpusaYwd3EXlhoUC3BFZfeHRE4qFVutpb9fp/feVjJ24H5yC72CsIASSGPhiXd795GXfBkBTazGniv7q9bi1ue8jN+tmABJic3E4BtHp3L8HWXbR1FZCV2+daiLv7q1HrzNzw5bPExuVjSzLDNr6OHjyZzS3e0ZO+UtjWzHLM29Utpvaiqd8rUBiOmKh+suUZfk7kiTZgX1AqPdTFicLYRURCGNsaepXbTc3eZ9kxzqeJcndN8AXW3akUX65nXMnGggbY+KSJDgwtMoAd1b3ZAkKNhAbH0xrs/t96PUa7t3/zQmLFCanhbPzpkwOvOF+Gs7fGEplVQmVVe7XX331VSXfIJB8BYGAUR+iCAW4RSAhJpfGocS60URHZKi2NaOypfst7XR0V3PgxE/ZtPpDmIzhlFUfpKmthPzl9yqhs5IkuR3g6/8f/9jz6SmPu7bxNG+ffJLkhHy6exsoKnt9ytcKJKYjFpclSbpRluW9wztkWf6BJEku4AfTH5pgKsxEVNNssXJNPG/vrUCWh7cTvB6XvTyajdtSOPFOHZIEazYk8ZsfnyAqJoh73p+nWmG4XDJtLf0EhxgIDjHw4UfW8aGH1yJJEntevMxrL5QiSRIrC+JV5qCuzsk7HDUaiU98fguv/KOEgQEHO2/KnFAoRjuRzaZInmArxpesVA/tG/uEbzMYMdjUdYd+HPle/qPzWcD7CmExCUxW2jXkZt6MzW7h+MWn6be0e/grXC7vJVea20qJjx7xUWk0I+eEBMei1ejps7Sy79gPVefpdZ7Rd0b99CsUVzUcp6rh+LSvE0hMRyzu97ZTluUnJEl6ZhrXFfhgNhrc+Iq4momVSU5eLJ/4/BaKzjcTnxgybh9qSZL4wENrede7V1B2qZ2nf3Vm6JV2+noGeeSzmwG3GegX3z9K+eUOdHoNH3x4LQUbkpRQy5vvWsZ1t2YhSdDVMcCVkjalJtSGbeP33J7ovUbHBrFyIzz88L/xmz+P7PfV/cw60IlRsk54jEujVa1+APLf2T1lQfiddP2sm5xmysQVHbGErWs+qkQ+7dr8GZ574z85XfQ31ufdjyRpKK89PK556Hzp89gdA0SFp9PT18SqZXco/omunjqcLs8ueQBXqveTlbodo2EkzPpy9f4pvYfFzpTFQpblcUsvyrIceE2GFzBTmagDwezkjZy8WHLy/CuT0dM1wN5XLqv2VVd2UVnWQXxiKGdP1FN+2d2YxmF38dzTFynYkKQ63mBwTxix8cF87uvXcuF0E+GRJtZtTvZrDOOJ8pdRlyZ5kOkncJkGLErGOcC5rTcT3tE87etOxOjJ3WgIZdA2vv9lNgkLTlCFyAabo9FpjZSU76ay7ghajZ5+a/u458vIFJW9qmx3dFeRs+QGbPZ+Thf9bdzzunsbeGn/l0mOW02QOZKOrirqms+pjjEbw1mVcxc6rZHSijfo6K4e52qLG7/FQpKknUAyUCLL8hkvrycDH5Vl+fGxrwlmnkAVA38YL7Kqq8NKd9cAiSlhWC12nvz+UY9Kr1aLnR998zBh4Ua27FCvTIZLVY9HbHwIu27LVrbXr1/vc0Uwn2aeNUf2TPi6v2Pz9bRvNoZzw9YvEBmWSm9/K28e/R69/bMrUmNpbr/EoK1fecJvaitRSoEPDPZM+nq1TWeobfKYprxiHeikrOYg4P4sNBo9rqGViITEjVsfJWKoWm1a4jpeeutLWAY6Jz2mhY5PsZAkKQR4A9gESIAsSdJe4EFZlkcXPUkBHgOEWAQgs5l70drcz6mjdQQF69m6Mx29fvwS5eNx/lQjv//FaZwOF/GJIdx2b46HUBgMGmxDZUF6ugfpaLeQmBJKY10vkgS3v8fdovX06dO8+uqrqnMnU7RuMeGPKWp1zt1EhrlbwIYGx7I2930cPPmzuRiegmWgg92Hv0l22rXY7FZKynfP6f21WgO7Nn+OhJjl2Oz97D/+E5rbSzEZwxShAHfnu6jwdCEW4/BlYAXwAHASdz22bwDHJUm6WZblxREXFuDMVl/s6Z7f1WHliW8eon+oiuylwlYe+s9Nk77Oy88W4xwKdW1u7KOmsgujScfgwIhg2MbUj9Lrtdj0h9l96GWsg9384Z+z/zTcnJxJfL1nnL8/BErIqseK5GItXPy9svmXzd7LrXs9dwbp7m2Y0GQ0myxLv46EGPfDhkEfzKb8D/PKga+Rm30bTqddaWLkdNro8rNT3mLDH7G4F3hMluXh7h+lkiS9DLwIvC1J0q2yLJ+ctRFehUzVeT0X1WzHcrmkTREKgMJzzdhtTvSGSa4uxtT/MQcZ+MTnN/P1L/6Z8GBPR3ifpY3PfeUzQ72NR9BodMguJ7K7qhBb8j9CZuo2rINdHDz582lVEB0wBVFasN1vsYiLWkbBivcgSRrOlT5HU1vJlO89zLDgTGbSnuwEXzyJp/pAEUBPJHeJcT/bmGq16hwendbAurz7WJF5k7Kvu7eRkxf/RJ+lZUZHulDwRyzSgLOjd8iyXC9J0g7gZdyJeHcCE4d6CBYl0bFBqu2wCOPkhQK4675cfv/kKex2F4kpoXzgwZ1EhKWwa/NnVcfZ7Fb2H3uC9u5KpSz1MOty7yc3+xacTjtHzj2FJGlYOlQbKCQoll2bP0d1wwnKaw/R1unfhD96Mow2LuFdmvepIpZe3v8VOntqPc4z6IO4fvNnMOjdn891m/6TF9783IT2d2+hsPMxGf93ayzM8Di0Gj0rl95OkDmKqvpjNLb6bpA1VdIS17Nt7UPotAZKKt7gVOFffJ5TXnuInCXXE2yORpZdXNYpVRkAACAASURBVLz8Mtlp16qOae28QkPrxdkadsDjj1i04PZHqJBluV+SpFtxl/x4DZFbEdCMDbedqZ4GWcuiufv9eRx8o4KgYD33fyTfp3/E231XFSTw9Sdu5NiRs9z3L7fjcjnIz7kHvW6kXlS/tYMjZ36DRqsnITaPxpZCJSQyLmoZeUvdCVw6nZFtBR/nbKn6PiZjKDlLdpGVdg2vHvga3X3+mRNCgxPIStuOwzFAR3cNUeHuSKi2rkq6xzFJBJmjFaEAd2+FkKCYKTlrvTF28h5PZAIlD2Pb2ofJSHaXi8tK3c7uw9/0W7DHEhOZxdrc96GRtJy/9E9Vkp4kadm+9mElezs36xZaO8rIWbKLsOB4apvOcuLCH4dWniNYB7p4ef9XiY3Kpt/STldvHaHB8UrCHkBi7EqMhpB5ixibb/wRi1PAXYBHnr0sy4OSJN0F/AX4KqLMx5wTCFFR19+SxfW3jBTTGL/Q9cT86MffHeOIVv+cLNYObtj6BSWPoq2rkj2H/huny66amMFtVmhovshA9rswGdUFBXRaA3HRy/wSiyBTJLdd+zWlRWdDSyEnLv4JZJmy2kPjmjl6+5ro7W9W+iP0W9vHFZbpMl1BmIywTHWFMbpWk0ajJT56xYRiodcFYXd4VpfV60zs2vxZ5fu4buOneWHfF7AOOZy1Wr0iFMOsWnaHUuYjZ8kuunrrKK85TExkFtbBbqU+lM3erypRfrbkWdKTNhIa7A71DjZHkZd9G2eK/z6Vj2DB449Y/BX4nCRJ0bIsewQ6y7LskCTpPtyFBW+Z6QFejUwkAP7WfgoEEZkM3sJYzxQ/yw1b0jEaQuizdKie8gBiIpaQFLeK2qYzNLUVq576y2sO09Vby+7D/83du76rOk+WXeNO3GEhSWzO/zAmQyjVjafo6WtU9XJOilvJ/hM/9tki0+mys+fwt8nNuhVJkigu3zNnZap9TejzYdrq7KlVHMjube+lwI2GEHZt+TwxEUvo7W9l37HvY7db2bHxU8RELMHuGFQl0Ol0RkKDYhWxcDgGuFJ9kKXpOwB3Qp5OqxaPsJBEbtvxdSJCk5FlFycu/olLlW96jEWWXQzYehSxALc5bQSJq+n52KdYyLL8HPCcj2Nk4P/N1KAEVxfj9VZo76rg+b2fJSw4ns1rPkZIkGcviNiopbR1lBMfs5wzRc9gMARhdwxSP5RY1dvXhM1uxaAfKetQVPY6LR2XPa4VEZrMu3Z+E63G/WcREZbiUden39rhdy9ly0Anp4p828tHM9MTeaA4oA+depINqz5AkDmKitp3aGjxbvtftfROYiLcpd9Dg2PZtvYR+vqbiYtaCoDRoJ6yLAOddPaM9EWRJC06rRGXy8mgrY+j535Hcnw+q3PuAsDpcuByOogITR46XsOa5fd6FQuAi5dfYsf6T6LV6rEO9lBa+SZajZ5rN3yS5Ph8evua2H/ix/T0NXk9fzERcM2PJLeN4RHckm0EDnlLAgxkZjOnIRBXDFNd2fjTq9nusBITlU10RJrX11cufRfLM29Qnh4vXHqRc6UjzzYyModOPcn2dY+g05koKd/DmWLv1WgyU7crQjGMQW/m+Pk/sCLrZgbt/Rw//3uf78sfkuNWExu9jPbOCr+Tx/xlKmXHM5I3c2D9AwBITicZl8+TfuXCjI3JOtjN26ee9HmcXq9udRsbmYnZGOZxnCzLlFbupaT8DZW5aln6TpakuMvBmE3hbFz9QXffir4GwoITqG85T0So2gXrHKfeFEBd01lefOtLhAXH095dxaCtl5VL7yA1wd2TJDw0iU2rH2Dvkf/x+d4WOgEnFsCngcOyLJ8CkCTpF5IkfVGW5W4f5y0qZsO0FEhC8/jjj0+YKBcbtZSVS92ObuvgxF/9aDPDiqxbVGKRnXYtkWGpHD4z3Hd5fLOBzd7vsa+xtYiq+uNcqto34Rgmw5LkLVyzfmQhfvTc77hSfWDGrj8VUuLXKP+WtVoqV6zlZ80vzHlpi0uVb5GZsk3JawB3GRJZdqnKgfRb2ykue92jBIhxjH8q2BzD+pX/QltnBRcuv4QsO+normFJyhYSY/NwOG0cv/CHCcfUZ2lRhctGhakfXMb6xBYrASUWkiRpgftlWf7xqN3HcScETq9zjcBvZrvTnq8yG2ZTBDds+ZxSEdRi7fKoPjoeo58yVy27i4IV7wZgRdbN7D/xE2obR9zv2qEGODa7Bb3WRFbqdqUPgt1u5cLlF6mqn/nKoWlJ69XbieunJRb+OKiHXxvv2IGSOo6lqs8Z7auZKfS6ILLT3SGpZdUHsTvUEfcd3VWcKf47G1b9q7JPq9VztvR5gk2RZCRvwmgIISQohluvfYyX93+FQVuvcmxV/TFWZN6s+DVMxlBys9yu1MbWYt488l1cLgd7j3yPYHM0Nnu/xxjGsmrZXaxc+i7sDivFZbs9vr/LlZM39aUlrsegD6a26Yxq/IFMQIkFcC0w1gt4CfgRQizGncQDacXgC3/qMYWHJKlKRweZIzh48klWLbsDCbh45RWCTJGszrkTh9NGT1/T0KTfzztnfqOcl5qwRnXdlPh8RSx0WgM3b/+q0gfB6XIoJiiXy8HLB75Kn6XVY2xGQyjB5ii6exvGrWTqi75+9XW93QfcHdeiwtNp6yynq3d2a3MaByz09DURFuIuG9/ZXUtLx5UZvYdGo+Pm7V9WghCyUrfx2tvf8Cg7fqXmbZVYaCQNa1e8h/buapWABZkiiI3Kpq5pJA2sp6+JVw78F6mJa9m46gOq6ybG5hIZnk5HdxUg029VJ3R6IzYyW3ng0OtMFKx4j1LNFsBi7Zz0qnPrmo8pgtlnuZNXDz62IMJxA00sMoGOMfs6hvYvWhZCz+yxTGXM4zmyx9LVW6cqKtfb30pt02mqx/QHKC5/nbCQRG7c8gUALAPddPWOODu7+xqJiRwJ6e3ubQTcT8w7N35a1TBntK9Co9ERbI7ymMQTY/O4buN/oNMZ6e5rZM/hb42bNxEbmc22tQ9h0AdRUrGXi5dfHLm+pE5aHF1nSPXE3+P+b9+7HmffsR/67Lg22i8x2XBaCXhx36OkJW1Aq9VT03DKw5EfbI5h46oPYDKGcbl6P+U1hyZ1j4jQFEUowC2GEaHJHqYuh2MA60A3ZlO4an90eDp2x4CSe+OSXfRZ2kiOX0NsZBYtHVdoaLlAv7WNqvrjrMu9T2XOAnyuIsZiNql/s2Ov1zFOVNd4aDQ6stK2K9shQbEkxa2msu7IpK4zHwSaWMQBYx/X7ECMJEkaWZan3yB3DpjPyT4QhcfhcHHd1o+wreAhappOq0xB3hgY7GHvkf8hL/s2nC47Fy69OG7Tm7W57yU4KBqAiNAkVi+7S7FBn7jwJzSSjsiwFBpaiyipcFdx3VrwcVWjHG84Xe78CQmJ5IQ1aCQtm/IfUGL4w0MSWb7kRpV/ZDQ7N35KmWgKVryb1o7LNLWVsGHlv7JiqP3nMLFDkT7jodXqWZq+c1LtOcdrjKTR6Mb9LGVkqhtOjHvN6zb9hzLZx0Rm0tPXROskVh/WwW7VCk6WXYSHJHnxi8i8dfxHbM5/gKjwdCWvBqCy7igxEZnodEYKr7xCdEQG2wo+rrx+6PQvaG4r5dZrH0Or1SPLIz6qsyXPeq2mGxOZxeb8j6DXmSkqe5XLVSOi29RWTG9/C6HBcQBUN5ygt7+F1IS19Pa3cPTcb/1+/+BetdrsFtUKaaYSNWebQBOLFmBso2U90DZWKCRJegh4CCA1dYyxVRBQ3HHD55SlfGbqVt48+gOvrTFH09FdzaHTv/B57bEx9KO37Q4LZ4qfwem0MTDKLhwZpo6G8eYPWZq+g7bOMnZu/DSpiWu93ls/lAgYGhxPRGgy7V2VWAY60UhaTGMieILMUZgMoR5CAe6neq3WMGFI7qB98maKx+K7uG7TfyjbLtkFr7w97vETRVH9TroeDqpt85dWbpmcWAx0cvj0L9lW8HF0OiOSpGHbuofps7TS2qk2TbZ3VfDqwa+RmbqNLWs+qgjMsozrqGs6x1vHfwTIXL/pM6rz0pM2EBIUR7DZHWYtSRK9/S28+NaXlLLjo5GQuH7Tfyrf16bVH6K9q5qM5I3ERS2lrauC3Ye/RVrCWmwOK1X1x5BlF5aBTmIjs0lP3khpxV6P607E26eeZPvaRzDogyit2OvzbyFQCDSxqADGdsaJBDyqv8my/Gvg1wAFBQWLLjNmNrrhjcdsrkYiIiK454aRSjCSpCEx1nsf5alQVPYa8dE5aLUGbHYLJRVvEBaSwMqltxMXtYywkARk2cWpor8pZa8bWgpZlnEd4H66PXH+j2xY/QGVKWpp+g6uVB8cVygAKmsPkxS3mus2fhqtVo/dbsUy2IVOa6Srp57IcPdDjHWgi8aWQlyyyyOqByA5Pp8bt3yBPYe/5fU+rR1lnC99YdKfTV3zeRpaLpIUtwpZdnG2+O/KqsJbKO1kTVfLM29ArzfxzplfK/s0kpZ1K9/vnmg7KzhZ+BeCTJGsX3k/Bl0QpZVv4nQ50GEcOl5DXHQOrZ1lhATFkZG8kUFbH2U1byPLLipq36Gzu4Y7rhv5bFIS1rAi8yZKKvZ4mArNxghkWT1dOJyDXoUCQKczq4RdkjTkZd9CRrK7cnJsVDZOp02VtZ2bdSvrV74fgCUpW9BIOorL/e+z3dhaxLN7/t3v4wOFQBOLQ0DYGJNTDl5KjSw0JgqF9XdyDgST0jCT8VF0dNcoy3j39vjhmKMbz/hDY2sRL771ZSJC3eYMu2OAu3Z9l6BRtmZJ0rAu737Kqt/G7rBw/MIf6bO0EhIUS23jaVIS1nrkVwA4nYPjRmGV1x6mrauSG7c+qtix9Xoz4UPJf8HmKIrKXsc60EVV/XEl/Pd00TOsy7vPQzDiopcREhwPnhUueP3Q1FrEyLKTfUd/QGR4GnaHld5+79VSQ4JiyEzdTq0jhaSqS2hd/lVqBXedpxMX/qREoa3OuVup1BodsQSHY5DUxLWK4zwuOof2rkpVNn5HdzXB5mjetePrinkmIWaFsrIcsPV6iOyGVf9Kv7WDsyXPEhocR1LcaiRJUib35vZLxEfnMGjr58SFP447frvDQmNrkVKOxOVyYjKoV4WRY0Jl40dlooN7tTwZsVioBJRYDJUO+S3usiGvDe3eDHxp/kY1fwSSOEyW0c7so+eewu6wEhYcT03jKa/hqCZDKNdv+RwxEUvo7Kll39Ef+N1gZnQcfHTEEpVQDKORNEoUiyw7KbzyivJafMwKj+MvVe6js6eWkxeeZv2qf3WXGS95jpaOy7hcTtqGzCYOx7jdhenubVA6sA1TXP66u0hdUDwbVn9AESKH04bN1jfjGdcy8oTibDKGc+s1j2E2hVMOdMQlk39sLzIStVm5UDbxeBxOG07XiPksIkzdrjYyLEURCnDXhSqvPUxvf/NQNvcRGlsLyU7bobLjpydt5NDpXwIy1oEuzpY8N1TufcR/kZa4jprGk1Q3nCQ5Pl/ZnxCby9MvPYDJEMqg3eLz4aOu+bwiFhqNliBzpOr1sRVyO7prlKQ893tMIyI0RRVcsRgJKLEY4qfApyVJysDtr/itLMtd8zqiBUQgCMzYqCeb3cKRs78Z52g3+cvvVco8RIalsjb3fRw+8ytW59zN0rQdWAY6OXLuKaWmk0ajY0XmzQSZIqisP0ZbZzngDksdHUk1jGWga9x49sIrr5AQm0tMxBKl0c3S9J10dFdzqWofl6sPIEmSYsLRjFqFnC5+hqjwDIKDopBlWTWZ6Ub1SJAkLUlxK8nJ2EXKUEhvZ3ctJmMoLtnFyYt/mpJfYrokRC9XRR11xiVz8to76Q+PBEkiw7KZqoZj/HJlMo8UqsN37Q4rR84+pXKYN7RcJC1xJA8hIixV9bnYHYM0thaqnMiAR3Kd+0FhxLpceOVlIkKTyEzdpuwbdlZ39zaoVh7D276SOYcJNkeP2SNx5OxTxEUvo62znMtV+1WvXq58k/yh8iHg9ouEBscJsZhrhupM/djngYKAw9/QWG+MTQAzGEJISShgzXK3+S44KJpr13+Sl/d/GYBtBR9nScoWwO30fO3tb9DZU8ugvY83j36fG7d8AYMhaNzrj8Zm7+e1g4+xNG0nWwoeBNxPmBtXfZAr1QeQZSfuoBqJrQUfIyt1Gza7hbdPPUljaxF1zWfJWbJLJRTg7rgGbjPYDVs+p6q8ChAZnsruw9+ipf3SpD6riNBkIsPTae+qpKevcVLnjqXXS45Hf8RIDa7Naz5CVcMxBgZ7VH086pvPs+/Vh5XtxNiVbFnzEXRaIxV1R3A4BomPXkF46MiqoqOrmmMX/uDVHNbYWsi5kudYtmQXg7Zejpx9yuOY4xeeRqs1EBWeQXN7CReHVodpSRtUJqqxk/tokuNWo9MZqW8+j0uW2bX5MyTG5qkErbz2bcpq3P95wzrYTUv7ZeKil7m3B7on5ehfqAScWCxWAuGJfzxmYmzTEQqAS1VvkZpQgFZrwOVycLlyHyGj/BwAoUEjsQ8poxLutFoDibF5ShOi9q4KuvsbiTWM5FjYbJ6lPMbicKmjkbRaPZmp26moPQxAetJ6stOuAdzis33twzy751Nenkzdtu/KenfsfHTEEg+hGGbrmo/x5tHv+919LTluNTs3/QdajQ6n08abx35I8zQ68LV3VXD8wh/Jzbp1yFQYh25UDxGD3oxG0lJU/joxkVkkxa2iu6+B4xeeVo7RaHTs2PDvSrHGzJStvHLga2Slblfdq3+gg7bOsnF7b1y4/CIXLr9IZFgqS1K2EBedw6WKvUoZeLvD4rU3+FgfQnhokvJvnc7EisybMejMhAbHk5a0buh9V1FR+47yvUiShHWwhyNnn1KKUE7Em8d+wPIlN6LXGblSfUAVbbdYEWIhmDbTFQqA5rYSXjn4NZLi8slM2cLmNQ/S2FqI3WFVsrmrG0a693b3NoxJuFOXHA8xx6i2axpPc826T6DV6ikqe83rk2BNw0nsqz+MflSF2oSYFYpYDK8UhhnuoVFZd1QRL1mWaeus4Mi53yhP0I4xpclHP8WGhcTz0fz/JP/YSPjlRH6LnCU3KM54rdZATsb10xILgEuVbypVV5dn3sSGlf+qjK+zuxat1khe9q3o9WZsdgsaSYvZFK4InF5nVlX1BXcC3+hMZ3CXC/dFWEgCt1zzX0riXVbqdvosLbR2lFNU9hreant1dFUpJkxgKEPbzfWbPqMqjT5MdESGR5l02eXwSyjA/Z0WXnnZ62sajZ6cjOsx6IMor31n0bRhFWIhmBYzIRTDdPc2sGn1A0pmdVbqds6WPIdG0mAZ6KJsVP2kgyefZHP+hwkyRVJWe5j6lokrpGYkb8BocBd8S4pbydniZ6msP6ZKiHK67NQ0nlZl2I6eeGoaT7Nq2R2EDK1wSireAKCy/igDth5iIjNp7Sjz6LXd1VvP+Uv/JD/nblyyi7aOcuKiRxLxbEb1RDsRY3tieCt+OB1KK97AbreyNH0HPf1NnCr8Czds/Tyxo4TZZAzluo2f5u+7Pzk0BotHtJJeZ6Sq/rhiKrTZLTS2FhMWkggTDDkxNk/VHTEqPI2o8DTSEtcjSRqvE/Spor/icjmICEuhoeWiYobS68xehWKYmsbTJMbkERw00kp1Jti58VOkDDncc5bcwMsHvqr021jICLEQTJmZFIphQoLUKwKDzkxh2SsetXP6rW3sO/bDca9zuvgZtq75KBqNlq6eelWUjk5rZMOqD5CXfRuvHnxMcYQa9SEqc1G/tZ3SipE+B4O2Xl498BhJ8asYGOyhsbUIvc5EVuo16HRGHE47QeYoJEnD2GID50ufp6jsNWTZRX7OPSqxSKr27K2h15lIiMllwNarrIJWLbuDjOSNysqkvauKc6Uzb94srz1Eee0h4qKWkRS7SiUUw5iMYapEwrFi4XAOcvjMr2huL8VoCCMyLJWbtj0KQFFdBbln3kbyuCr09HlmWA8TF70MRi0Io8IzuG7jpzGbI6lpOMneI99DHtW50O4YwDLQSZBJHd0kyzKlFW9Q13RW8T1YrB0zUmFXqzUoQgFuYU2IWU5l3dFpX3u+EWIhmBKzIRTgrhq6cuntgLs0Qm72LeQtvY0Ll1/iXMk/PI4PD01GrzPS3lmp6qtcUXuY5rYSTMZwYiKz2LT6gx7nBpmjSEvawKXKN0mMXcm2tQ8TNCoyKNgcjdkUoXoqHLT3KX/4Go2Om7Z9WVVjCiA1Ya1X2/qwOWq48c4wyVWlqm29Lojbrv2aYns/f+mflNccpmDFe1XHlZS/gVYztuDBzDC6LMnoEh3D1DSeHiUUTk4XPcP6le9HkjRup3/TWWTZxeWq/USGpSkZ/ACtKZn8Rd/rVewbWws5VfhXlmbsRKvRKas4QIl4G2ZrwceUUi8ZyZtoaiumovYdUhPW4XQ5qG08xVvHnmBbwUNKgiS4/RMRoSmsWf5uLlz6p6oQ4XRxOm1YBrpU4dtrV7yPxNg8jp//w5SLTwYCQiwEk8KfhkXT4Uzx3+nsqSMqLJ28pbcq+1cvu5PK2iOqvtlrlr9b6YDW0HKRfcd+qHqi77e2029t9yoUw0RHZGI2RbJry+c8ku8GbX0TVgONCE32EApwl5zITN1GZd0x1ZPuMF299SoH/VjSktapnLQrs99FzSh/zTDb1z2E02lj/4mfKJ3nQoJi0evMdPXUqsRzMuh0JlVZEq1G5+5GJ7vo7K2jue2SEimkOKsr7VD5Rz4bWubXvZPj84mNWurVd1Rc/jrF5a8jIbFy2Z1D2eDllFW/zcZVH0Sj0VJS/gamMRFuJmMEN237MjGR7rqjfZY2Xj/0Tfa8823uuv47qqKAiXF5JMblodOZOFX45yl9TuOxf6iuVWhwPAZ9EMFB0WSnXcvAYO+4jbcWAkIsFhD+lP+YzagrXw2LZorKuiO0h1SqxALcS/xh9DqTIhQASXGrSIxdSYMX34V1TKG20SaT7LTtGPRBHkLR29/CO2d+jctlR68zkRy/BrvDOtRAyc3AYA8ul0OVdzHM9rUPk5niroM11il7rvR5slK3K/kNB+58gCNnn1Im4HTHBtXxDucgnT111DWd8xAZrdbA6mV30dBykdysW5XscLd4PqGIlVajZ0XWzRgNIe4SGkORY+A2/el05iEHtIzL5fRYTZwq/DNdvfWsybmXxNhcunvrvbam9dZbu7Onhsq6o4r/YhhvQqp6HVmp1quRtNxx/bcJD0kE3P0gLlftV34Dg7Y+evqbiIm8R/W+btr6KC++9UV2H/42uVk3Exedo6oNFuejiONUaO+q5NWDj3H95s+qTFJhIfEzfq+5RIiFwC/86UMxk/T0NVJZd0xpkVnbeEZlU85I2uxxjiw7SYpbxdoV7wPcfovG1kJOXHiaIFOk4gBNiFmu6pcxHNU0jNNp59WDX8Nmt6DTmbj1mq8RMTTBXKk+qFQatQx08s6Z37Bu5f3otSYkjVaViJcUt4rwkETVagjcET+GUUmDFmunIhSJsXk4HINU1Z8gI3kjdsfgUM6BzP7jPyIxbiW5WbeRFDfiW9FpjWg0Otbmvk8RwaS4Ve7+HUMtW6/d8Ekl63hZxnW8cuC/6O1vIS/7NuW8uqZz7D/+I1wuO8fO/x+b8z+CVqPjSvVBGluLuOO6bysTbUr8Gl7a/xUYU/F7y5oHaW4rpWJMye1Dp3/BoK2f5Zk3AFBW8zZtnRUe3+F4ZCRvVoQC3D6T5vZS3ninhJCgGBpbizy+R3CH0ep1Jnr7mzh+4Q9kp+1ga8FHldfHmrZmktrGMyqxqG1cUN2hPRBiIfDJXAvFMIdO/y+Xq95CkiSa2koZ/YSeEKsu0WEd7KGzp557b/i+UkZ858ZP8/zez9BvbePVg19Tjr12/b8pheKcTjtFV14lPCQBsykCl8vJkXO/w2Z31zpKil2pCAW4CwyevPgnHE53mY/K+qNU1rt9GKHB8dy967vKhO2SXdgcnsWeYiKWqJ7ag8yR7gqsBR9XMpSb2kp45vVPYndYlAxpGZmGlossSdmqup5vc5OkKofhjhLKxWLtpGCUwKQkrCEpfjX1zecprzlEdf0JtFo9g7Y+DPog1RO5TmckOiLdQyyWpu9kafpOJI3Wo9/FiYt/pKjsVTQanddS4cOEBsfjcNoUX1GQKYrN+Q+ojnE4B+npa1Jlfvdb2yku382KzJuV0N+unjpVBFlZzUH0OhOJsXl09dYpAQLB5mhW59yFVmOgpGIP7V0etUsnzZXq/djsfcQM9drwVZo/0BFisciY6d7ds+XI9pfm9lKv+7vG5FVUN5wg2BypCAW4wzeDzVEeZT4On/k1Hd3VBJkisQx0ER6axP4TP0WnNdDb36LqoDY2NNXhGMQ5Tj+I3v5mThX9jbW57wPZxcnCP2MdcFeqyc+5hyUpW7EMTWgul1PJQ2jrqsRsjFCVskiIWUFEaCLNXrK7x/Y/sA5243I5OF38DOvz7keSNNQ3X6Cu+RzLMq5ndc7dILtAZWqTuOWa/0IaE5M0etvhHFRE0WZXd9JzOm10dNfyoNwEwE3bvkTCqBpbSbErvTZHGlvWQ43Etes/QUbyJmTZRU3jGQqvvIxeZ1J9rwDHzv/B67VOFf6F+uYL5CzZhd1u5WzJsx7HlFTsUXqbgDvD/satjyrvLSVhDS++9UXlu5sO1Q0nVflBCxkhFgsIfyb9mSxrPt9CMRGFV17BZAghPmYFHV1VnCn6GzKoJrTuvkaPZD0Al8tO4ZVXyF9+L2tz3RFGdscgrx963KPVZlNbCcXle1ieeSNOp413zvx6Qlt7SfluSsv3DD3ru/+flriB/OVuW3pYSDxanZEDJ37CsozrGbD1ukuHy06PCrf2UUUKDfpgNqz8V0KD42hoLaS9q4roiAz6Le2cLvyrcu+ahpNuB3dvPRFhKWxa/aFRKx0nPX1NXKrcK5uB2gAAIABJREFUx5rl93p0omvrrJgwX2Xvke+xNve96HVmSireoLe/SXmtq6dOJRadPhLwEmJyiQxPo7mtVMllSYzNVVZ8kqQhPWk9qYlrOXz6l1gHezAPlRLv6WuiaoJQ1MbWwkmVwDcbI1TFDt2rqLQZEYvFhBCLAGa+ut7NlSN7Osiyk5Neolh2H/4Wy5e47eKllXvHDVXUaQ2qchR6nZH0pA10jXL8DnOq8M+cKfqbu3mQF5NPeGgSW9d8DLMpgrKat7lw6Z+q18c6NsOC46lrPkfdULawQR/Etes/iexyImskJEmi8MqrqoTALWs+SnqSu0BfXPQyDp36BQ0tFxm096vGNPppOyI0WZX7oJG07D3yXRyOQTat/pDH+4iJzGRd3vsZGOymp6+JmsZTqtf7rW3jNqQ6XfwMkqQlOiKdprZSispe9XocoPIbuFwO3jz6fZraSjzKtrvHrCE9aQN7Dn+LFZk345IdFF55RSkBMhFmYzgRYal09zZgGRjbrXmEgcFu+i3tShiu3TFI9yz3PF+ICLEQqJgv/4Q/mIzhRIWn0d3b6LECGGZgsNtrq9O0xPVkJG+i39KOVmtgeeYNHolzBl0Q7735Z+j1ZorLd6vyOsabnMJCErhx66NK4tea5ffS0VWlCAG4i+7l59ytRHONnYTzl99LUtxKZbu85rBHiGVUuLobZGR4quIr8UZ89HK2rHlQta+xtUh5Wt750u9Vrw0XCVyReZNi7z9b8qzfWc1Op43jF37v8zhAqa8F7lyVzJRtNLWV0Nha5JFACW6zW09f44TXd5ccCVLEMio8nZu2fRGDPhi7Y4B9R3+git4KMkWSlbYdu2OAy1UH2Hv0uxSseA9ajYGistd8mMuuToRYCBQCz+wksS73PlIT12Id7CYiNAWjIRiH08Zbx57wuyd1QswKdmz4pMeT63Cmtd0xQE3DSbKGwmjBndfR2FI4rs8E3BnEN2//Cvox9vSxBRA7e2rZffhbpCdtoN/azuVKde0ns1H9uZuMoR73amwtJjTYvUKRZRdNrRPXg1qz/F5V2YymthL2HXOvFrPSrgHPBRSAqnJudtq1lFTs9ahtBe5Q3NU5dxMaHE9t0xkqx0Q/jSU+ejn5y+9Bll04nOrVnmWgi4iwVAZtvZy4+DQ3bn1UGYfDaeNcifc+58OkJW7gmnUPo9UaqGs+z/7jPyY361allpc7zPpu3jz6PcBdBPK2ax8jaKj1akp8AW8e/R4HT/58wvtc7QixWGRM1VQVeELhjqzJW3obgMqmrNMaWLXsDr/FIi46x6uJA9yC8dwb/4ksO8lO36F6bbjdpkajHypTrl6JZKZu9RAKdy6Gp92/vaty3AibitrDpCWuQ6PRIssuymsOD13/GlLiV9PQUsiJC38kJCiWpLiVSJKGpRk7aWgtBGSWpGwlKW4lnd21lJTvRkb2eL+d3TVKE6DYyCyoHVNET5Zxuuyq0N/Q4HjuveEHvHn0+x6lMDblf5jstGsB3CG+dotqNaX+HMO5fvNnFPGy2ftp7SgjIiyV5rYSkuLyWJ1zJy6Xg6r6EyrBkmWXzz4fW9Z8RFm1pcTnk5G8ycP8mBCbS0r8GuqazxEXnaMIBbhrhRn1IfPST2QhIcRCEJBCARMnMTmctnFfG0v7mHh+m92irCCuVB3A7nDHf1bUHiEz1R2W2tvfQmNrEevy7ic36xacLgdHz/5WZfoZGFRHWfVbO+jsqWXV0ts5f+kFv00Zdc3n2H34v4mNzKa9q5KWjsuszrlb6eWRkbyJyPA0EmNzlXPSkzaQELMCsymca9Y94t6Z6n5qPlvyLDrtiIjJskxzu9sEExaSQGLsKkAtFpIkodMaaGwtJjYqWxENkzGMghXv8SjNER+tDl3OTt+BDGQkbaTP0srFK68o4hQaHKda5Rj0wbR1VdDcfgm7Y0ApBaLR6EiJVycd+uM70Gj0qm2d1sCFS/8kLXGd0sdEI2lYt/L91DWfo9/SpkrMHLT1YXNYPa4rUCPEIoCZC4d2oAoFQF3TOVZk3qyEmA7a+jAaQrAMdHK2+O9+X6e+5QJHzj6l+CzOXXqe2Mhs7I4BVdTM4TO/orbpDAZ9EDWNp4gITSYv272y0WkNbC34KDVNIzWRSsp3ExuZRXJ8Pr39LQSZo5QkrLjoZby479FxcyCCzdEkxa2m39pOQ8sF2jrLVQliw0/tw2SmbPViRpNIiMlV7UuMzeVsCYSOWolJkkRcdA65WTcTGZ6GXmdSfBRjI7Cq6o/T19/C0oydyr7IsFS2rPkoFbVHCAuJp9/Sjl4/MvmDO7opNaFAGWNIcBzvnPnV0P09V3XDfbrtdvUkPTpE1uG0ceTs7wD36iQ6IoOevkaP5knnS59n/cr3A26TX1X9MeyOAYrKdrM29z0jn8NQWHBHdzUnLj7NyuzbsTusHLvwB5/Z5AIhFlc1gSwU4M6x2Hvku6TEr6Gnv4mymkMEmSKUvILJMLbzWUhQLFlp27EOdHHs/P/RZ2kDZKobTijH6MdkBGu1Bt594xMcOv0LGluLiAxPJTpyCZIkMWjrJTx0JMM4LCQBkynca/hlSFAc79rxdeWp93zpC5y/9ILqmEFbv6oCr8NhpbTiDSUEt7bxDI2txYSHJKnO6+h2rxia20sV4XK5nGSnXePRcwKgteMK8dE5gHtlVNt0xn1uQgFmUziyLBNkjmJp+g6y065RJn77mN7jGkmjEoXRqyCXa/yJWK8309vfTGhwvCr3BNwCHWyORMbJLdu/itEQgtNp58DJn6n6ThSXv05DayFmYxitHVeUVeeV6rfITN1KRGgSTqedM6MeMC5V7vv/7d15fJPXne/xz5Es7/sKXgCD2XHA7CRAlpKWlDTTTKdrmpm06fQmndtmZjrTzm3DtKG36by6ZDJdM+mSTNrbNm3TJG0CzUYIS1iCAZsYbMAYbDDGxsa7dp37h+zHeiTZssEgL793Xnm9IumRfazY+up5zjm/HzV1bww6LhFKwmKSGutB0e9ia7Vpknk0VqkU5C02PolmpBaxfvk/sHXnIyHHNV06Rlv7WTLTpxv3xcelsn75P/Dsts+xZsn9xiqo3Kw5IfWUblzyGbbv/0+SE7NZv/xzJCfmUt/4Dt29LaY2r3Nm3EpFzfOsXnxfX8G5ThzOgevnWmv2VjxFY/NRTp/bS4w1tq+2k6a67jXiYpONToHlVf49F7sO/ogb5t5NYnw6F1qOmUpc9HN7nOyveJrEhCwS4lI531zZ9707eHH7v1E4pYy1Sz9rHG9ehms+WzjffNRY2gsDoQX+khrhSoWD/8xmxzs/wqIULncv71//daN/uk/76LZfYl7x7cbrZbXaKJ19Z0iTovbOBoJj2enq5uUdm0lPLaLXcXlC9JSIJgmLSWi8BMW1ElhjCCA16NN5P6/XxV92f4OyBR8xLpsAfYUHrcQFdc6ra3ibWdPWGRO0BXk3MKNgFXNn3EZWXye32TNuMSaw+zmcnUzPX8GcGf4KrokJmaYJWP98gv/yTOBGuH4VNf4zE4uycmPZZyjIW0x75zl2lv8Eu+MyFmVlQckdpPdVsnW6uqk+/RpnGw/Q3nWe9jDzAi53Dw0XynE4u8KuznK5e1EeCwrFybNvmTb4+bSPY6f+EnC0RvvMiwN67G243L1UndrK5YD9JG8eeJyVpff65x1O/ImOrsaQ+amRzFd5fW5a24dfg0oMTsJikpnsQQHQ2FKF1+syVtAM1UrT43VRWfMCRVPKjN4Kp+p34dNequte95f2wL9qJzkxx7SSB/zlvRMTzJ+oe+yt1DbsobhgFT32y+w5/FNyMkpMxwS2Xu1/TiQLSu4wSobkZc9j9Q1/x5sHHsenvby651EWzLoDiyWG6tOv9F12G5rH66S7t8UUFlprXO4eUzikpUwlJ6B6q0VZyM6YSdOlKuO+5raTFCcO9Crfd+QXYXeLN7fW8NKOh033vXvyJfJzFpKRNo1eR7tx9iSuLwmLSUSCwq+9s4FX9nyLGQWrsTsuc7z2lSGPd7q62frW1ymaugynq5v6CwexKCs99lbszi4S4lJQyhJS3NDn83Km8QDJiTlGKW2Px8nZxgNc7mwwJoDBX9+pdO5fGU1zzjYeID21EFtMPFUntw6rsF1SQpbpdv/ZyfSpK1iy4MP+ntD1O4cVFODf2NbfG6KfUorOnovkBFxGS08tpKO7kfi4ucZ9wZV29x75Ob2Oy6Qk5XC28WDENriBnK4uXtqxmfj4dJyurmHNVy0s2UTpnLvweP2X2uzOduyOzkE3c4rIlNZX1iBlLCkrK9M7duyI9jDGrGvdsGiySErIJit9Bu1d51lZ+knyc0tDjumxXyYpIQOv18PeIz8zSnVPm7qClKQczl+sCHvZB/zlKQqnlGF3tA+6Z2EoeVlzuf3GLxv9NQ5VPUtCQobpEhrAjgPfD9lFHk5KUh53b/hOyP3BZz0nzmynsuZFVi/+FIkJmdSd2ztkuY8rEWONZXrBKnw+L2fP7x+y3EdWejGbbh6Yg+pfJuvzedlX8ZRpoYOgXGu9PPJhcmYx4Y3l8h3jSVb6TN5705exxSTg9bqxWm0hx/i0z796R/s4fOxZU0+H+guRK4/anR2cPLvjisfYY2/l8PE/UjrnTmJtidww727TJrt+gfMhQ+nquUh51W8pm/9hlLKglApZsaS1j/2Vv0RrL9v3B9YTU8yefjNJCVnUXzhobOpbNPtOpmTPp62jniPVz4U9S0hPLaIwbzHdPS2cadzvb1+79qtk9837lExbx2tvf5twdbrAH7qB+ifmLRYrSxd8VMLiCklYTGBy2WlwSQlZTMtfgdPZyelzexnsjaffvJm3Gw2TrFab6dO11poLLVVGfSelLJTO/SD1TYe5ZeXnSUsp4HJnAwcqn4nYbCc/t5Qp2QuM7nLDVTJtPasXfypk6Wkwt8cRdo6mdM5dTJ+6gq7eZvZX/o9RBr3q1FaO91XRTYhL42/e97jpeXZnZ9g9CitLP8m8mbcDsLDkDrbu3EJe1lxjjic/txSLsnKw6tem52WmTWfjus3G2NNrCjnfXGkEBfgbRKUk5YWd7Ae42Fpjqj4c6EpbzQoJiwlLgmJwifEZbLr5EaOcR9HUZcTHppAQn87JszuoOrU15DnB9ZFa2+tIS5mKUlYOH/s9bo/DVAwQNKsX/x2Zaf5lt9npxWxcu5mdB3846CWgoilLuXXVP5rGGW4s4F/+u2DWHbg9dsqrnmX5ok+YgiIcp6ub9q5GUpPzTRvbigvXUDbfv3ktM306sbZEtu97zCiZ0X/Jp9fRRmPzUePym9fr5q13fhD2e03PX2n8t9UaS+GUJRTmlZmOmTVtLe1d52nrOGOceUybutwUcjOLbuT0uT2mHddenyekz0ggt8fOtp1bmFG4Cm/fHpPczNl4fR4OHh3dftuTiYTFBCPzE5EV5C02ggL8b1D9ZwnLFn6Myx0NNLYcNT2nouYFcrPmkJFaRFdPC7vKf2Lq9ma12Jg1bS15WXPx+jx9O4Q3mb6GxWJhXvGGQcNiVtCu7aKpy8KGRWryVG5Z+ZCxpyM7Y5apTWw4LreduNhk8rLmkJ3xBV7asdkopZGeYq7yOjVnIR/e+AN2HPh+SP2t7fsfp2TaOmwx8dQ27MHh7Aj7/bp6m00rprp7WkJWisXFJnNj2f34fF5qG3aD1iFzET29rXR2N/HOu7+mbP6H0drLgcpnQhpaBXO6u/s23SnsjsukJOZS33SIXqkme8UkLCYQCYrh6Y2wOSslOQ+CwsLh7ODPb36VuNhknC5zD4mEuDS09vHqnm+RmjwFp6sHh7ODuNhkVpbea/o6Tndom1Xwn1X098juZyF88cP0lAJzW9Z481mk1+vG7bGbAjFw97bVEkNGapERFo3NR1k4+07TRrtYWyKrF9/HC298yfS1fT43J86Yq+aGs7v8CW4q+3uSErOoO7ePuvN7SUrMClldBf65hNkBRRzPX6wkK72Y7t5m3j7yMwCqT79K9elXQ547e/otlExbj93ZzoHKX4X0rVi37AGKC9cAMKNwNa/u+daId/8LPwmLCWI8NCwaK85frODoiT8Znep6eluNS0jB9aKCOV3myqTLF32CBbM2AnD4+HMcPfGi8Vj16dfo6W1j+aJPkJKUQ0dXI+VB1+j7rVp8X8gn74ttJyicUsaikk14vE4Ovvsb2rvO0dpeh9tjH/RsounScU7V72T98s+Frcvk8Thp6zjD2qUPMD1/BV29Lew78hQl028mN3Ngv4e/3IlisPmc9JRCli38KFZrLO+efInG5oGA7e5t4ZU9j5qOrzr5MnlZ8yjIuyHs1wt87hv7vjvkMeCvRxXYsyMhPoNtATvxE+MzjaAAyM2cTU7mbC5eGrq8uwhPwmICkBVPI3f4+B843NfcyKKszC3eQEJ8GnXn9tLZHX7iNFh6apERFABl8z9Ebf1O05lLQ1M5DU3lWC22Qbv2gf8yViCv18WFlmPcumrgctOGNQU899o/02Nv5dU9/8Hc4g1MzVlIUsDqph57G28f/il2ZwcdXXeHNBLq7vV3u5uas9CosJueks/yRR/n5R1f4/abvmzUpEqIS+XmFf877LyERVnZcOOXjLOanIxZvLj9/9Dd2wJARuo0puevoNdxmZNn3kT3/bN9/2PcuOQzFE1dhlIKW0y8USCyX3uElqz9MlKDGkKlFJpue7zOkNVbwYULxfBJWIxzMpF99Xzay/HTQ2/MCyfwUlC/4HLZ/YYKCoDKmhdYUXoPAHZHO2/se4ykhEzz5aaETOJik3E4O2ltr+Ptwz9l8dy7jeKC/V/H3jePEHymAnC89hVa2k6G7BGJtSUye8bN7Cr/CXes22zcPz1/BekpBSF7Q5ITc0yXv6zWWNKSp9Ld20J6SgF3rNtsVJBdUHIHByqeobHlKFr72HP4SThM3xgtxFjjWFl6L2kp+TQ2H6XmzPAK/DVdOm5axnyhpcr0uMvdw/7K/2HlDX+LRVl49+RLpla1YmQkLMYxCYrRExebTE5GCd29l2jv8n+ytcUkkpiQTldPc9jr3K3tZ0xtQDu7m+jubQ45bjiOn36FCy1VJMSn03L5FB6PA7uz3fSpu63jbEgPjYqaF3B7HGSlz6Dp0nHTPo2qU9tYs+RTKGXB63VTdWqbEYpnzu+jdPYHTJ+6kxKyjCWzgcLVYuovfRKo1+EPqYK8xaZS46lJedy2+p/ZtmtLyE50f6dCuz9ARqi/cyD4mzvtDNMf/OTZHdTW70JZrEZpeXFlJCzGKQmK0ZOUkMUd6zaTmJCJT/vYd+QXdPZc5LZV/0SsLZGOrkZe2fNoyBtpXGxySFny7IxZEfdSDKa965wRVOA/w3hl9zeZW3w7Hq+Dd0++ROj8geZY7bawX+9U/Vu0dZwlJSmX5rYTpnLpHV2NnLt4hGlTl/m/itYUF64hPbWQqlPbWFhyBwBHjj9nXFoK1Ou4HLKc1e3xT94H95sA/yR2buackLCIi00hP3cRdkfHsDsf9rtp6WeMs4qMtGnk5yykoelQyHE+7QWv9Ku4WhIW45AExegqmbbe2NVsURYWzf4ATleX0U0vLSWfZQs/ztuHnjRt6rJYrCETyFZLDEpZmDZ1GVaLjfoL5Xi85t4PkSTEpZGeWkh7VyPtXefZX/n0Ff9s/j0MZ8I+Fh87UCCw/5JVRmoRF1tr+O3WBwEG3c/Q3nWOd47+P5Yu+AgxMXFYLTFsunkLL+3YTP2Fg1RUP8/C2ZuMPRNa+0LGER+Xyqb1j5DUV2Cw8sSfONI3jxSJUhasFvOmw5iY+EGOFqNBwmKckaAYfcFv5h6vIyQEZhXdREJcKm/s+57Ri9vuaKe67nXmFW8A/KusmltPcMvKhyiauhTwX6r6y65vRJyzAP+lnbVL/xfZGbOwWKy43HZe3/vtQc9UbDEJrCj9JOmphTRerORI9XPD/pn9e0vCL821xcQPuemtX3Xda5TO/SvjklNcbBIb1vwLL27/NypqnqfmzHaWL/wYCfEZ1Dbs4mJrTcgYkgIq0c6f+T6OHP8DCsXy0nsomlJGZ3cTew7/NKSJlNY+jtVuY9HsOwG43HmOc2HOKsTokbAYJyQkrp2autcpnFJGXtZcnK5uDlT+kpiYeG5Z+QXTbmJ/KY75ponUA5XPUFu/C6vFRkvbSRITMo2gAMhKn0FOZglNw1iueevKh8hIm2bcjrUlsHje3Zw6u5OOMH0nVt7wt8zqK0menV6M3dE+rMnhNYs/bbRN9XhdeL0ubDGJWCwW3B471adfH/S5yYm5rFj0CWJtiVTXvR4yl5OWkk9ifCa9jjYczg52B1TWDeYK2nPSH1Bzim8zih8mJ+awYc2X/OHp6mFvxVO0dzYAcOjY7zjXdITY2CSaWo6N+AxOjIyExTggQXFtebwuXtn9TeLj0nC5e4w3wJfe/Hfues+jps1q4Se6B67Du9z2kI55wXszBpMWtJMaYGr2Agpyb8Dn87Dz4I9Nu7+Dl4qmpxYGPz2EUlZmTR/YKR5jjWVfxdO0tJ0iI7WQ1va6IXtnvGfNF43mUTlZczhd/zYl09caj3u8LmPuIpIz5/dTmLeYmUU34XR1s+eQf5I7OTHXdFxGwM9126p/5I+vfdG43dx2YljfS1y98OehYsyQoLh+HM4OLJYYo2ppZ08jh6qeNS471dbvDrmUEszt6eXtwz/F7XHg9Xk4dOz3fS1QIwveDOj2OI1y4xZLDPNnvc/0eHBJksYhNhP209qLy2W+xORwdtLV00T9hYNDBoXVYjN1GbQoixEUXp8Hh7OL3eVP4A6qozXEaNh96L/51Z/v59ltnzMmuBsulA/atzs5MQeLGroGlrg25MxiDJOguL5mFKziprLPYrXaOHP+ADsP/ohjtds4fe5trBabqXGOQg1awbTu3F7qzu0d8phw3nrnByws2URCfDrnmyvJy5rHgoCACN5QdvjY77E7Ooz9CQ0Xyof1fXYe/CFrlz1InC2J6rrXaQxoRBRnS2btsgfIzpjJxdZqdh960iii6PW5aW49QW7WnJCvabXE8Ps3/jXk0tJw+ILmc5rbTvDK7m9SkLcYp7ubG+Z80OjLfa7pyJC9LMS1I82PxigJiuvv45uexBawomawJkHLF93DvOL34HLb2V3+RMgn/NESZ0vmPWv+heyMmXT3tvD63u/S2X1hVL/H9PyV5GXPo7W9jtr6XaxZ8mlmT7/FeLzq1FbKq35r3I61JVI6+y7SUvIpnLLEuN/n8/DbrQ+MqD/2cKUl5zOz6Eacrp6+eZLIiwXEsEnzo/FMguL68y/FNP85WMP0g8jPLTU+7cfHpbBu+YM8u+1z12RMTnc3W3d+HVtM4rDnAUZiZtFa1i79rHE7zpYU0po1+LbL3Uv5MX949E+U+3we9lc+YwSFRVnR2jdqvSM6uhuN0iwieiQsxhgJiujQ2sfRE382Sme0dZwNe1knLmBvAviL7VmUdUSXRnIz55Cb5d+gFlyiIpzBgiLWlsSsaevQ2sups2+N+FN9Yd5i0+2CvMWcbthjlALR2kfd+X2DPn9vxS84dPz3+Hxu3B4HFksMK0vvpWT6zfh8HvYe+QV1Ad0CxfgmYTGGSFBEV0XN85y7eIQ4WzIX22rClodovFhJV08LKUn+chenzr41oqAonFLGLSsfMlZY7T70JKcbdo94rDHWWDaue9joRVFcsIa/7P6/xmT8cAQvxe3oaqS2YTe9jnay0otpaTsRcUK/v69EXGwK71//NVKS/CuZLNZYblxyPw1XsClRjE0SFmOA9KEYO4LLUQTzXxr6GoVTynC5esKWlxhKccEa01LcmYVrRhwWKUm5TMlaYGpalJNZQkpSLh6Pk/i4VNo7z+HTXmwxiRQXrsLrdVN3bq8p2N498WfiY1PIy5pLa/sZDh17FvCvyhqqTHs482e+1wiKflarjZiYOAmLCULCIsokKMYfp6ub2vpdV/Tc4OY8vfbLxMemMH/WRizKSnXda0MuX51XfDsrSu9BKYupD7jH62JK9gJWln4SiyWGlsu1bN/3Pd5301eM/RfFhWt4fe93jK/l014OHP3lFf0cwcLN7zS1HAtbmFCMT7LPIoq2bNkiQTHJVNS8QMOFQzhdPTQ2v8vh6j/w3rVfoXTOB1g4+/1sXPfwkC1Sly78qFGmQymF09VNd28Luw7+mCXzPmTsy8jJmEXpnLtMG/Xyc0tJjM8M+3Wv1skzbxK8svLdky9fk+8lokPOLKJEGhZNTh6PgzcPPG7cTkvON11OSkrIIiO1aNCdycFvyAcqf0nd+b0ArOF+02Nut3lz3Eh2V49UZ08TlTUvGAsEGi4cGvGlLDG2SVhEgUxki369jsu43D3E2vybzjxeF929lwY9/p2jv2L14vuwWKxcaKnibOMB47GDVb/hxiWfxmKJ4dLlWqpOvYTL3cPieX+N1+dmf8XTI9hdPXIVNc9T27CHmJi4vm53438Plxggm/KuI5mfEOHkZs5h2cKPoSxWKo4/x/mAHdXhJMSnE2tLorOrMWQvQ2J8hmmCW4gIhr0pT8LiOtmyZQuPPfZYtIchokyhKJq6HKvVNuxlpTHWONJTi+ixt2IP6O8dXQo5c5gQZAf3WCLzE6Lf+hWfZ3q+/2+zrf0s23Z/Y8h2nwnx6Wxc+zApSbl4vS52vPNDzl88cr2GG9bSBR9h/qyNeDwOdh96MurjEdfHmFwNpZSyKKWeUkrdF+2xXK309HQJCgH4LxH1BwVAZvp0cjNnD/mcucUbjP0LVmssZfP/5pqOMZK87Pksmn0nVksMcbHJrF/+4KBNlMTEMub+Lyul4oDvAWXRHsvVkolsEcjtceD1movgRep1EbIjO8qXjeNjk023bTEJWC22KI1GXE9jLiyAjcCjwLg+t5WgEMHcHjtvH/6Z0evi8PHnaOs4O+Rzqk+/apTlcHvsHKyBkOyDAAAHl0lEQVT6zfUY6qAam6vo7G4ybtc27B5y3sVfMXYt6SmRGzOJsW3MTnArpZ4Gdmitn4507Fib4JagEJGMpNeFxRJDalIevY72YfXGvtZibUkUTV2K222n/kI5g010T8mez3tWfxGrNRafz8ObB/6L8xcrru9gRSQywR0tEhRiOEZSvtvn84QU/Ysml7tnWOVO5sy4zSgDYrHEMLd4g4TFODYWL0MNi1Lqs0qpg0qpg62tg9fSuZ4kKIQY4Axq3+oaZi9yMTaN27DQWj+ptV6utV6elZUV+QnXmASFEGYVNX/kUl8V38sd9Rw69rsoj0hcjahehlJKbQL+NeCux7TWf4rWeK6UBIUQoRzOTra+9TUsFpu0Qp0AohoWWuuXgXFbmlI22wkRmQTFxCAT3FdIziaEEJPJmAsL5e/mci9wK1ColKrWWg/eCDgKJCiEEJPNmAsL7d/48Uzfv2OOBIUQYjIac2ExlklQiPEsO2MmORmzaW2vG7S5khCDkbAYJgkKMZ4V5C3h1pUPYbFY0drHrvInOHN+TF3dFWPcuN1ncb2Ul5dLUIhxb1bRTVgsVgCUslAybV2URyTGGwmLIWzZskU624kJwe5oN93uHTNNlMR4IZehBiF7KMREcqT6eVKTp5KbNZfW9tOUVz0b7SGJcUbCIgwJCjHRuD29vLHvu9EehhjHJCyCyPyEEEKEkjmLABIUQggRnoQF/olsCQohhBjcpL8MJfMTQggR2aQOCzmbEEKI4Zm0l6EkKIQQYvgmZVhIUAghxMhMurCQoBBCiJGbVGEhQSGEEFdm0oSFBIUQQly5SREWEhRCCHF1JnxYSFAIIcTVm9BhIUEhhBCjY0KGhTQsEkKI0TXhdnBLSAghxOibUGcWEhRCCHFtTJiwkKAQQohrR2mtoz2Gq6aUGv8/hBBCXH/lWuvlwzlwosxZdAM10R7EGJENXIr2IMYIeS0GyGsxQF6LAXOHe+BECYua4abjRKeUOiivhZ+8FgPktRggr8UApdTB4R47YeYshBBCXDsSFkIIISKaKGHxZLQHMIbIazFAXosB8loMkNdiwLBfiwmxGkoIIcS1NVHOLIQQQlxDEyIslFLxSqkfKqVqlVJ1Sqn7oz2maFJKWZRSTyml7ov2WKJB+T2olHpAKfWQUmpptMcUTZP996GfvE+YKaW+oZQ6oZS6qJT6fKTjJ0RYAF8FntNazwI+BDymlNoQ5TFFhVIqDvgeUBbtsUTRQ8A7WusntNb/Bfy9Uiot2oOKBvl9MJH3iT5KqXuAN7TWc4C/Bv5TKTVkGYxxHxZ9fwxNWus3AbTWh4Bf438BJqONwKPAkWgPJBqUUlbgY1rrwPXj+4H7ojOiqJvUvw/95H0ixG6t9Y6+/94L7AM6h3rCuA8LwAv8Iug+N9AThbFEndb6Ra11S7THEUXrAUfQfTXAx6MwlqiT3weDvE8E0FqfDbh5F/BJrbVvqOeM+7DQWnu01vagu2/B/6lBTD4zgbag+9r67heTlLxPhFJKxSilvgk8AXxTKZU01PHjPiyCKaU+BvxJa3042mMRUZGL/xNjIDeQrZSacL/v4srI+wTg/1v5Lv76UEvwz+kMakL98SilioF1wOZoj0VETTMQG3SfDbgU6TRbTA7yPuGntW7UWl/WWncAPwLeN9Tx4y4slFKblFI7Av69q+/+DOBB4CE9SXYaDvZaTHKngZyg+zKAuiiMRYwxk/F9Ypgu4P9QNahxV3VWa/0y8HLgfUqpeOBhYLPW2tN3XwbQPpF/IcK9FoJdQKpSyhJwJjEX+E0UxyTGgMn6PjFMc4G3hjpg3J1ZDOI7wONa617wb0ICviW/AJNP35vAz/EvGe23Gng6KgMSY4m8TwBKqTyl1K0BtzPwLyF+dKjnjbszi2BKqQ8BDwCfUkr1320DzkRrTNGk/C/CvcCtQKFSqlprvS/Kw7revg88pJSagf934eda6/aojihK5PfBT94nTJKAbyulqvDvrygAPqy1vjDUk6SQoBBCiIgmymUoIYQQ15CEhRBCiIgkLIQQQkQkYSGEECIiCQshhBARSVgIIYSISMJCCCFERBIWQgghIpKwEEIIEZGEhRCjQClVopRyK6UeCbr/J0qpLqXU8miNTYjRIGEhxCjQWp8Cfgb8k1IqG0Ap9e/Ap4G7g3qCCzHuSG0oIUaJUmoKUAv8GKgGngQ+rrX+XVQHJsQokDMLIUaJ1roJeBz4PPDfwBcCg0Ip9RWlVI1SyqeU+mC0xinElZCwEGJ0nQTigL1a6x8FPfYG8H5g53UflRBXScJCiFGilLoN/xnFXuAmpdTiwMe11vu11rVRGZwQV0nCQohRoJRaCryAf5L7FqCeCJ3HhBhPJCyEuEpKqRJgG/Aq8HmttQt4BHi/Ump9VAcnxCiRsBDiKvStgHoVOA7co7X29T30DP4VUf8RrbEJMZrGfQ9uIaKpbwXUzDD3e4H5139EQlwbss9CiOtEKfUw8ACQA3QBDmB5X+AIMaZJWAghhIhI5iyEEEJEJGEhhBAiIgkLIYQQEUlYCCGEiEjCQgghREQSFkIIISKSsBBCCBGRhIUQQoiIJCyEEEJE9P8BwpZ+zg8moAcAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 51.2313 - accuracy: 0.7907\n",
      "Epoch 2/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 24.2685 - accuracy: 0.8227\n",
      "Epoch 3/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 10.8028 - accuracy: 0.8267\n",
      "Epoch 4/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 4.7221 - accuracy: 0.7867\n",
      "Epoch 5/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 2.1920 - accuracy: 0.7253\n",
      "Epoch 6/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 1.2170 - accuracy: 0.8013\n",
      "Epoch 7/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.8692 - accuracy: 0.5893\n",
      "Epoch 8/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.7517 - accuracy: 0.4880\n",
      "Epoch 9/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.7130 - accuracy: 0.4733\n",
      "Epoch 10/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6992 - accuracy: 0.5080\n",
      "Epoch 11/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6955 - accuracy: 0.5080\n",
      "Epoch 12/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6947 - accuracy: 0.4733\n",
      "Epoch 13/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6937 - accuracy: 0.5080\n",
      "Epoch 14/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6940 - accuracy: 0.4840\n",
      "Epoch 15/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6982 - accuracy: 0.5080\n",
      "Epoch 16/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6936 - accuracy: 0.5080\n",
      "Epoch 17/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 18/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6938 - accuracy: 0.4920\n",
      "Epoch 19/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6947 - accuracy: 0.5080\n",
      "Epoch 20/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 21/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 22/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6951 - accuracy: 0.4840\n",
      "Epoch 23/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6949 - accuracy: 0.4707\n",
      "Epoch 24/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6945 - accuracy: 0.4733\n",
      "Epoch 25/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6938 - accuracy: 0.5080\n",
      "Epoch 26/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 27/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 28/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 29/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6936 - accuracy: 0.5080\n",
      "Epoch 30/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6936 - accuracy: 0.5080\n",
      "Epoch 31/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6943 - accuracy: 0.4947\n",
      "Epoch 32/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6939 - accuracy: 0.5080\n",
      "Epoch 33/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6936 - accuracy: 0.5080\n",
      "Epoch 34/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 35/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6934 - accuracy: 0.4707\n",
      "Epoch 36/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6938 - accuracy: 0.4787\n",
      "Epoch 37/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6934 - accuracy: 0.5000\n",
      "Epoch 38/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 39/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6937 - accuracy: 0.5080\n",
      "Epoch 40/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 41/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6942 - accuracy: 0.5080\n",
      "Epoch 42/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 43/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.4920\n",
      "Epoch 44/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.4627\n",
      "Epoch 45/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6936 - accuracy: 0.5080\n",
      "Epoch 46/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6938 - accuracy: 0.4707\n",
      "Epoch 47/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6937 - accuracy: 0.5080\n",
      "Epoch 48/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.4867\n",
      "Epoch 49/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 50/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 51/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6936 - accuracy: 0.5080\n",
      "Epoch 52/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 53/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 54/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 55/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 56/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 57/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6936 - accuracy: 0.5080\n",
      "Epoch 58/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 59/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 60/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 61/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 62/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 63/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6936 - accuracy: 0.4787\n",
      "Epoch 64/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.5053\n",
      "Epoch 65/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6942 - accuracy: 0.5080\n",
      "Epoch 66/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.4733\n",
      "Epoch 67/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6937 - accuracy: 0.5000\n",
      "Epoch 68/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 69/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6937 - accuracy: 0.5080\n",
      "Epoch 70/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 71/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6937 - accuracy: 0.4653\n",
      "Epoch 72/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6943 - accuracy: 0.5053\n",
      "Epoch 73/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 74/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6944 - accuracy: 0.4467\n",
      "Epoch 75/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6938 - accuracy: 0.5080\n",
      "Epoch 76/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 77/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 78/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 79/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6937 - accuracy: 0.4867\n",
      "Epoch 80/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 81/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 82/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.5080\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 83/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 84/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 85/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.4787\n",
      "Epoch 86/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 87/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 88/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6936 - accuracy: 0.4840\n",
      "Epoch 89/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6940 - accuracy: 0.5080\n",
      "Epoch 90/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6936 - accuracy: 0.5080\n",
      "Epoch 91/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6936 - accuracy: 0.5080\n",
      "Epoch 92/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 93/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6940 - accuracy: 0.4787\n",
      "Epoch 94/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.4893\n",
      "Epoch 95/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 96/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.4947\n",
      "Epoch 97/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6934 - accuracy: 0.4840\n",
      "Epoch 98/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 99/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6938 - accuracy: 0.5080\n",
      "Epoch 100/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6934 - accuracy: 0.5000\n",
      "Epoch 101/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.4973\n",
      "Epoch 102/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6939 - accuracy: 0.5080\n",
      "Epoch 103/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6929 - accuracy: 0.5080\n",
      "Epoch 104/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6941 - accuracy: 0.5080\n",
      "Epoch 105/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 106/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6934 - accuracy: 0.4973\n",
      "Epoch 107/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5000\n",
      "Epoch 108/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 109/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 110/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6936 - accuracy: 0.4787\n",
      "Epoch 111/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 112/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 113/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 114/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6940 - accuracy: 0.4600\n",
      "Epoch 115/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 116/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 117/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 118/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 119/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6936 - accuracy: 0.5080\n",
      "Epoch 120/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 121/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.6933 - accuracy: 0.4787\n",
      "Epoch 122/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 123/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 124/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 125/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.4813\n",
      "Epoch 126/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 127/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6937 - accuracy: 0.4653\n",
      "Epoch 128/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.4893\n",
      "Epoch 129/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080: 0s - loss: 0.6932 - accuracy: 0.51\n",
      "Epoch 130/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6936 - accuracy: 0.5080\n",
      "Epoch 131/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6937 - accuracy: 0.5080\n",
      "Epoch 132/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 133/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 134/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 135/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 136/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.6938 - accuracy: 0.4680\n",
      "Epoch 137/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 138/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 139/500\n",
      "24/24 [==============================] - 0s 7ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 140/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.6942 - accuracy: 0.4520\n",
      "Epoch 141/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 142/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 143/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 144/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6936 - accuracy: 0.4787\n",
      "Epoch 145/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6937 - accuracy: 0.5080\n",
      "Epoch 146/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 147/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 148/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6937 - accuracy: 0.4653\n",
      "Epoch 149/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 150/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 151/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6947 - accuracy: 0.5080\n",
      "Epoch 152/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.4840\n",
      "Epoch 153/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5027\n",
      "Epoch 154/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 155/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 156/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 157/500\n",
      "24/24 [==============================] - ETA: 0s - loss: 0.6936 - accuracy: 0.50 - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 158/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 159/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 160/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 161/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 162/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 163/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6935 - accuracy: 0.4680\n",
      "Epoch 164/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.4787\n",
      "Epoch 165/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 166/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 167/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 168/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 169/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 170/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6936 - accuracy: 0.5080\n",
      "Epoch 171/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 172/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 173/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 174/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 175/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 176/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 177/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6938 - accuracy: 0.4760\n",
      "Epoch 178/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 179/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 180/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6936 - accuracy: 0.4733\n",
      "Epoch 181/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 182/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 183/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 184/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 185/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 186/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 187/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 188/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 189/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 190/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 191/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 192/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 193/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 194/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 195/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 196/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 197/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 198/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 199/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 200/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 201/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6938 - accuracy: 0.4520\n",
      "Epoch 202/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 203/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6942 - accuracy: 0.5080\n",
      "Epoch 204/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 205/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 206/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 207/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 208/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 209/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 210/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 211/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 212/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 213/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 214/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 215/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 216/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 217/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 218/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 219/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 220/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 221/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 222/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6936 - accuracy: 0.4493\n",
      "Epoch 223/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 224/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 225/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 226/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 227/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 228/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 229/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 230/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6936 - accuracy: 0.4680\n",
      "Epoch 231/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 232/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 233/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 234/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 235/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 236/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 237/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 238/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 239/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 240/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 241/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 242/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 243/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 244/500\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24/24 [==============================] - 0s 4ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 245/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 246/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 247/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 248/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 249/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 250/500\n",
      "24/24 [==============================] - ETA: 0s - loss: 0.6928 - accuracy: 0.51 - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 251/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 252/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 253/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 254/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 255/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 256/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 257/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 258/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 259/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 260/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 261/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6937 - accuracy: 0.4947\n",
      "Epoch 262/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 263/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 264/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 265/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 266/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 267/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 268/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 269/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 270/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 271/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 272/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 273/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 274/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 275/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 276/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 277/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 278/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 279/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 280/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 281/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 282/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 283/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 284/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 285/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 286/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 287/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 288/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 289/500\n",
      "24/24 [==============================] - 0s 4ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 290/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 291/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 292/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 293/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 294/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 295/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 296/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 297/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6934 - accuracy: 0.5080\n",
      "Epoch 298/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 299/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 300/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 301/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 302/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 303/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 304/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 305/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 306/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 307/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 308/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 309/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6935 - accuracy: 0.5080\n",
      "Epoch 310/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 311/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 312/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 313/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 314/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 315/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 316/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 317/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 318/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 319/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 320/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 321/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 322/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 323/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 324/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 325/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 326/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 327/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 328/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 329/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 330/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 331/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 332/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 333/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 334/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 335/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 336/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 337/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 338/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 339/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 340/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 341/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 342/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 343/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 344/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 345/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 346/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 347/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 348/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 349/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 350/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 351/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 352/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 353/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 354/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 355/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 356/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 357/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 358/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 359/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 360/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 361/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 362/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 363/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 364/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 365/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 366/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 367/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 368/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 369/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 370/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 371/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 372/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 373/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 374/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 375/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 376/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 377/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 378/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 379/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 380/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 381/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 382/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 383/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 384/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 385/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 386/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 387/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 388/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 389/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 390/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 391/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 392/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 393/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 394/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 395/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 396/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 397/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 398/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 399/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 400/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 401/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 402/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 403/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 404/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 405/500\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 406/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 407/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 408/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 409/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 410/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 411/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 412/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 413/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 414/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 415/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 416/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 417/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 418/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 419/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 420/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 421/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 422/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 423/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 424/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 425/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 426/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 427/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 428/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 429/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 430/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6933 - accuracy: 0.5080\n",
      "Epoch 431/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 432/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 433/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 434/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 435/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 436/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 437/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 438/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 439/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 440/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 441/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 442/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 443/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 444/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 445/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 446/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 447/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 448/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 449/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 450/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 451/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 452/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 453/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 454/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 455/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 456/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 457/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 458/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 459/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 460/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 461/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 462/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 463/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 464/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 465/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 466/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 467/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 468/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 469/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 470/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 471/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 472/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 473/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 474/500\n",
      "24/24 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 475/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 476/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 477/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 478/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 479/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 480/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 481/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 482/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 483/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 484/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 485/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 486/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 487/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 488/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 489/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6932 - accuracy: 0.5080\n",
      "Epoch 490/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 491/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 492/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 493/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 494/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 495/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 496/500\n",
      "24/24 [==============================] - 0s 2ms/step - loss: 0.6930 - accuracy: 0.5080\n",
      "Epoch 497/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 498/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 499/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6931 - accuracy: 0.5080\n",
      "Epoch 500/500\n",
      "24/24 [==============================] - 0s 1ms/step - loss: 0.6930 - accuracy: 0.5080\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\anaconda\\lib\\site-packages\\ipykernel_launcher.py:45: UserWarning: The following kwargs were not used by contour: 'levals'\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#构建数据集\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "# 导入数据集生成工具\n",
    "import numpy as np\n",
    "import seaborn as sns\n",
    "from sklearn.datasets import make_moons\n",
    "from sklearn.model_selection import train_test_split\n",
    "from tensorflow.keras import layers, Sequential, regularizers\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "%matplotlib inline\n",
    "\n",
    "plt.rcParams['font.size'] = 16\n",
    "plt.rcParams['font.family'] = ['STKaiti']\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "OUTPUT_DIR = 'output_dir'\n",
    "N_EPOCHS = 500\n",
    "\n",
    "#读取数据\n",
    "def load_dataset():\n",
    "    # 采样点数\n",
    "    N_SAMPLES = 1000\n",
    "    # 测试数量比率\n",
    "    TEST_SIZE = None\n",
    "    X, y = make_moons(n_samples = N_SAMPLES, noise=0.25, random_state=100)\n",
    "    X_train, X_test, y_train, y_test = train_test_split(X, y, \n",
    "                                                       test_size = TEST_SIZE, random_state=42)\n",
    "    return X, y, X_train, y_train, y_test\n",
    "\n",
    "#绘制数据分布图\n",
    "def make_plot(X, y, plot_name, file_name, XX=None, YY=None, preds=None, dark=False, output_dir=OUTPUT_DIR):\n",
    "    plt.figure()\n",
    "    \n",
    "    axes = plt.gca()\n",
    "    axes.set_xlim([-2, 3])\n",
    "    axes.set_ylim([-1.5, 2])\n",
    "    axes.set(xlabel=\"$x_1$\", ylabel=\"$2_2$\")\n",
    "    \n",
    "    #根据网络输出绘制预处曲面\n",
    "    if (XX is not None and YY is not None and preds is not None):\n",
    "        plt.contourf(XX, YY, preds.reshape(XX.shape), 25, alpha = 0.08,\n",
    "                    cmap=plt.cm.Spectral)\n",
    "        plt.contourf(XX, YY, preds.reshape(XX.shape), levals=[.5],\n",
    "                    cmap=\"Greys\", vmin=0, vmax=.6)\n",
    "    # 绘制正负样本\n",
    "    markers = ['o' if i ==1 else 's' for i in y.ravel()]\n",
    "    mscatter(X[:,0], X[:,1], c=y.ravel(), s=20,cmap=plt.cm.Spectral, edgecolors='none', m=markers, ax=axes)\n",
    "    \n",
    "    # 保存矢量图\n",
    "    plt.savefig(output_dir + '/' + file_name)\n",
    "    plt.show()\n",
    "    plt.close()\n",
    "        \n",
    "\n",
    "\n",
    "def mscatter(x, y, ax=None, m=None, **kw):\n",
    "    import matplotlib.markers as mmarkers\n",
    "    if not ax: ax = plt.gca()\n",
    "    sc = ax.scatter(x, y, **kw)\n",
    "    if (m is not None) and (len(m) == len(x)):\n",
    "        paths = []\n",
    "        for marker in m:\n",
    "            if isinstance(marker, mmarkers.MarkerStyle):\n",
    "                marker_obj = marker\n",
    "            else:\n",
    "                marker_obj = mmarkers.MarkerStyle(marker)\n",
    "            path = marker_obj.get_path().transformed(\n",
    "                marker_obj.get_transform())\n",
    "            paths.append(path)\n",
    "        sc.set_paths(paths)\n",
    "    return sc\n",
    "\n",
    "def network_layers_influence(X_train, y_train):\n",
    "    # 构建 5 种不同层数的网络\n",
    "    for n in range(5):\n",
    "        # 创建容器\n",
    "        model = Sequential()\n",
    "        # 创建第一层\n",
    "        model.add(layers.Dense(8, input_dim=2, activation='relu'))\n",
    "        # 添加 n 层，共 n+2 层\n",
    "        for _ in range(n):\n",
    "            model.add(layers.Dense(32, activation='relu'))\n",
    "        # 创建最末层\n",
    "        model.add(layers.Dense(1, activation='sigmoid'))\n",
    "        # 模型装配与训练\n",
    "        model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
    "        model.fit(X_train, y_train, epochs=N_EPOCHS, verbose=1)\n",
    "        # 绘制不同层数的网络决策边界曲线\n",
    "        # 可视化的 x 坐标范围为[-2, 3]\n",
    "        xx = np.arange(-2, 3, 0.01)\n",
    "        # 可视化的 y 坐标范围为[-1.5, 2]\n",
    "        yy = np.arange(-1.5, 2, 0.01)\n",
    "        # 生成 x-y 平面采样网格点，方便可视化\n",
    "        XX, YY = np.meshgrid(xx, yy)\n",
    "        preds = model.predict_classes(np.c_[XX.ravel(), YY.ravel()])\n",
    "        title = \"网络层数：{0}\".format(2 + n)\n",
    "        file = \"网络容量_%i.png\" % (2 + n)\n",
    "        make_plot(X_train, y_train, title, file, XX, YY, preds, output_dir=OUTPUT_DIR + '/network_layers')\n",
    "        \n",
    "\n",
    "def dropout_influence(X_train, y_train):\n",
    "    # 构建 5 种不同数量 Dropout 层的网络\n",
    "    for n in range(5):\n",
    "        # 创建容器\n",
    "        model = Sequential()\n",
    "        # 创建第一层\n",
    "        model.add(layers.Dense(8, input_dim=2, activation='relu'))\n",
    "        counter = 0\n",
    "        # 网络层数固定为 5\n",
    "        for _ in range(5):\n",
    "            model.add(layers.Dense(64, activation='relu'))\n",
    "        # 添加 n 个 Dropout 层\n",
    "        if counter < n:\n",
    "            counter += 1\n",
    "            model.add(layers.Dropout(rate=0.5))\n",
    "\n",
    "        # 输出层\n",
    "        model.add(layers.Dense(1, activation='sigmoid'))\n",
    "        # 模型装配\n",
    "        model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
    "        # 训练\n",
    "        model.fit(X_train, y_train, epochs=N_EPOCHS, verbose=1)\n",
    "        # 绘制不同 Dropout 层数的决策边界曲线\n",
    "        # 可视化的 x 坐标范围为[-2, 3]\n",
    "        xx = np.arange(-2, 3, 0.01)\n",
    "        # 可视化的 y 坐标范围为[-1.5, 2]\n",
    "        yy = np.arange(-1.5, 2, 0.01)\n",
    "        # 生成 x-y 平面采样网格点，方便可视化\n",
    "        XX, YY = np.meshgrid(xx, yy)\n",
    "        preds = model.predict_classes(np.c_[XX.ravel(), YY.ravel()])\n",
    "        title = \"无Dropout层\" if n == 0 else \"{0}层 Dropout层\".format(n)\n",
    "        file = \"Dropout_%i.png\" % n\n",
    "        make_plot(X_train, y_train, title, file, XX, YY, preds, output_dir=OUTPUT_DIR + '/dropout')\n",
    "\n",
    "\n",
    "def build_model_with_regularization(_lambda):\n",
    "    # 创建带正则化项的神经网络\n",
    "    model = Sequential()\n",
    "    model.add(layers.Dense(8, input_dim=2, activation='relu'))  # 不带正则化项\n",
    "    # 2-4层均是带 L2 正则化项\n",
    "    model.add(layers.Dense(256, activation='relu', kernel_regularizer=regularizers.l2(_lambda)))\n",
    "    model.add(layers.Dense(256, activation='relu', kernel_regularizer=regularizers.l2(_lambda)))\n",
    "    model.add(layers.Dense(256, activation='relu', kernel_regularizer=regularizers.l2(_lambda)))\n",
    "    # 输出层\n",
    "    model.add(layers.Dense(1, activation='sigmoid'))\n",
    "    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])  # 模型装配\n",
    "    return model\n",
    "\n",
    "\n",
    "def plot_weights_matrix(model, layer_index, plot_name, file_name, output_dir=OUTPUT_DIR):\n",
    "    # 绘制权值范围函数\n",
    "    # 提取指定层的权值矩阵\n",
    "    weights = model.layers[layer_index].get_weights()[0]\n",
    "    shape = weights.shape\n",
    "    # 生成和权值矩阵等大小的网格坐标\n",
    "    X = np.array(range(shape[1]))\n",
    "    Y = np.array(range(shape[0]))\n",
    "    X, Y = np.meshgrid(X, Y)\n",
    "    # 绘制3D图\n",
    "    fig = plt.figure()\n",
    "    ax = fig.gca(projection='3d')\n",
    "    ax.xaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))\n",
    "    ax.yaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))\n",
    "    ax.zaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))\n",
    "    plt.title(plot_name, fontsize=20, fontproperties='SimHei')\n",
    "    # 绘制权值矩阵范围\n",
    "    ax.plot_surface(X, Y, weights, cmap=plt.get_cmap('rainbow'), linewidth=0)\n",
    "    # 设置坐标轴名\n",
    "    ax.set_xlabel('网格x坐标', fontsize=16, rotation=0, fontproperties='SimHei')\n",
    "    ax.set_ylabel('网格y坐标', fontsize=16, rotation=0, fontproperties='SimHei')\n",
    "    ax.set_zlabel('权值', fontsize=16, rotation=90, fontproperties='SimHei')\n",
    "    # 保存矩阵范围图\n",
    "    plt.savefig(output_dir + \"/\" + file_name + \".png\")\n",
    "    plt.close(fig)\n",
    "\n",
    "\n",
    "def regularizers_influence(X_train, y_train):\n",
    "    for _lambda in [1e-5, 1e-3, 1e-1, 0.12, 0.13]:  # 设置不同的正则化系数\n",
    "        # 创建带正则化项的模型\n",
    "        model = build_model_with_regularization(_lambda)\n",
    "        # 模型训练\n",
    "        model.fit(X_train, y_train, epochs=N_EPOCHS, verbose=1)\n",
    "        # 绘制权值范围\n",
    "        layer_index = 2\n",
    "        plot_title = \"正则化系数：{}\".format(_lambda)\n",
    "        file_name = \"正则化网络权值_\" + str(_lambda)\n",
    "        # 绘制网络权值范围图\n",
    "        plot_weights_matrix(model, layer_index, plot_title, file_name, output_dir=OUTPUT_DIR + '/regularizers')\n",
    "        # 绘制不同正则化系数的决策边界线\n",
    "        # 可视化的 x 坐标范围为[-2, 3]\n",
    "        xx = np.arange(-2, 3, 0.01)\n",
    "        # 可视化的 y 坐标范围为[-1.5, 2]\n",
    "        yy = np.arange(-1.5, 2, 0.01)\n",
    "        # 生成 x-y 平面采样网格点，方便可视化\n",
    "        XX, YY = np.meshgrid(xx, yy)\n",
    "        preds = model.predict_classes(np.c_[XX.ravel(), YY.ravel()])\n",
    "        title = \"正则化系数：{}\".format(_lambda)\n",
    "        file = \"正则化_%g.png\" % _lambda\n",
    "        make_plot(X_train, y_train, title, file, XX, YY, preds, output_dir=OUTPUT_DIR + '/regularizers')\n",
    "        \n",
    "def main():\n",
    "    X, y, X_train, y_train, y_test = load_dataset()\n",
    "    make_plot(X, y, None, \"月牙形状二分类数据集分布.png\")\n",
    "    #network_layers_influence(X_train, y_train)\n",
    "    # Dropout的影响\n",
    "    #dropout_influence(X_train, y_train)\n",
    "    # 正则化的影响\n",
    "    regularizers_influence(X_train, y_train)\n",
    "    \n",
    "    \n",
    "\n",
    "main()\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 卷积神经网络"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### LeNet-5 实战"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x: (60000, 28, 28)  y: (60000,)  x_test: (10000, 28, 28)  y_test: [7 2 1 ... 4 5 6]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(4, 28, 28)"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#数据预处理\n",
    "def preprocess(x, y):\n",
    "    print(x.shape, y.shape)\n",
    "    x = tf.cast(x, dtype=tf.float32) / 255.\n",
    "    x = tf.reshape(x, [-1,28*28])\n",
    "    y = tf.cast(y,dtype=tf.int32)\n",
    "    y = tf.one_hot(y,depth=10)\n",
    "    \n",
    "    return x,y\n",
    "\n",
    "#数据准备\n",
    "(x, y), (x_test, y_test) = datasets.mnist.load_data()\n",
    "print('x:',x.shape, ' y:',y.shape, ' x_test:',x_test.shape,' y_test:',y_test)\n",
    "\n",
    "x[:4].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential_53\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "conv2d_18 (Conv2D)           (4, 26, 26, 6)            60        \n",
      "_________________________________________________________________\n",
      "max_pooling2d_18 (MaxPooling (4, 13, 13, 6)            0         \n",
      "_________________________________________________________________\n",
      "re_lu_18 (ReLU)              (4, 13, 13, 6)            0         \n",
      "_________________________________________________________________\n",
      "conv2d_19 (Conv2D)           (4, 11, 11, 16)           880       \n",
      "_________________________________________________________________\n",
      "max_pooling2d_19 (MaxPooling (4, 5, 5, 16)             0         \n",
      "_________________________________________________________________\n",
      "re_lu_19 (ReLU)              (4, 5, 5, 16)             0         \n",
      "_________________________________________________________________\n",
      "flatten_9 (Flatten)          (4, 400)                  0         \n",
      "_________________________________________________________________\n",
      "dense_225 (Dense)            (4, 120)                  48120     \n",
      "_________________________________________________________________\n",
      "dense_226 (Dense)            (4, 83)                   10043     \n",
      "_________________________________________________________________\n",
      "dense_227 (Dense)            (4, 10)                   840       \n",
      "=================================================================\n",
      "Total params: 59,943\n",
      "Trainable params: 59,943\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "#网络构建\n",
    "from tensorflow.keras import Sequential,layers\n",
    "network = Sequential([\n",
    "    layers.Conv2D(6,kernel_size=3, strides=1), # 第一个卷积层, 6个3x3卷积核\n",
    "    layers.MaxPooling2D(pool_size=2, strides=2), #高宽各减半的池化层\n",
    "    layers.ReLU(), #激活函数\n",
    "    layers.Conv2D(16, kernel_size=3, strides=1),\n",
    "    layers.MaxPooling2D(pool_size=2,strides=2),\n",
    "    layers.ReLU(),\n",
    "    layers.Flatten(), #打平层，方便全连接层连接处理\n",
    "    \n",
    "    layers.Dense(120, activation='relu'),\n",
    "    layers.Dense(83, activation='relu'),\n",
    "    layers.Dense(10)    \n",
    "])\n",
    "\n",
    "network.build(input_shape=(4,28,28,1))\n",
    "network.summary()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(28, 28)\n"
     ]
    },
    {
     "ename": "InvalidArgumentError",
     "evalue": "Tried to expand dim index 3 for tensor with 2 dimensions. [Op:ExpandDims]",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mInvalidArgumentError\u001b[0m                      Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-79-e27dbefed3c4>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      7\u001b[0m     \u001b[1;31m# 插入通道维度，=>[b,28,28,1]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      8\u001b[0m     \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 9\u001b[1;33m     \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexpand_dims\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     10\u001b[0m     \u001b[1;31m# 前向计算，获得10类别的预测分布，[b, 784] => [b, 10]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     11\u001b[0m     \u001b[0mout\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnetwork\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Program Files\\anaconda\\lib\\site-packages\\tensorflow\\python\\util\\dispatch.py\u001b[0m in \u001b[0;36mwrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m    199\u001b[0m     \u001b[1;34m\"\"\"Call target, and fall back on dispatchers if there is a TypeError.\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    200\u001b[0m     \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 201\u001b[1;33m       \u001b[1;32mreturn\u001b[0m \u001b[0mtarget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    202\u001b[0m     \u001b[1;32mexcept\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mTypeError\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    203\u001b[0m       \u001b[1;31m# Note: convert_to_eager_tensor currently raises a ValueError, not a\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Program Files\\anaconda\\lib\\site-packages\\tensorflow\\python\\ops\\array_ops.py\u001b[0m in \u001b[0;36mexpand_dims_v2\u001b[1;34m(input, axis, name)\u001b[0m\n\u001b[0;32m    433\u001b[0m     \u001b[0mInvalidArgumentError\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mIf\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m`\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;31m`\u001b[0m \u001b[1;32mis\u001b[0m \u001b[0mout\u001b[0m \u001b[0mof\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m`\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mD\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mD\u001b[0m\u001b[1;33m]\u001b[0m\u001b[0;31m`\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    434\u001b[0m   \"\"\"\n\u001b[1;32m--> 435\u001b[1;33m   \u001b[1;32mreturn\u001b[0m \u001b[0mgen_array_ops\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexpand_dims\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    436\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    437\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Program Files\\anaconda\\lib\\site-packages\\tensorflow\\python\\ops\\gen_array_ops.py\u001b[0m in \u001b[0;36mexpand_dims\u001b[1;34m(input, axis, name)\u001b[0m\n\u001b[0;32m   2311\u001b[0m       \u001b[1;32mreturn\u001b[0m \u001b[0m_result\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2312\u001b[0m     \u001b[1;32mexcept\u001b[0m \u001b[0m_core\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_NotOkStatusException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2313\u001b[1;33m       \u001b[0m_ops\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraise_from_not_ok_status\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   2314\u001b[0m     \u001b[1;32mexcept\u001b[0m \u001b[0m_core\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_FallbackException\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2315\u001b[0m       \u001b[1;32mpass\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Program Files\\anaconda\\lib\\site-packages\\tensorflow\\python\\framework\\ops.py\u001b[0m in \u001b[0;36mraise_from_not_ok_status\u001b[1;34m(e, name)\u001b[0m\n\u001b[0;32m   6841\u001b[0m   \u001b[0mmessage\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmessage\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m\" name: \"\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mname\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;34m\"\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   6842\u001b[0m   \u001b[1;31m# pylint: disable=protected-access\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 6843\u001b[1;33m   \u001b[0msix\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraise_from\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcore\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_status_to_exception\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcode\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmessage\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   6844\u001b[0m   \u001b[1;31m# pylint: enable=protected-access\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   6845\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Program Files\\anaconda\\lib\\site-packages\\six.py\u001b[0m in \u001b[0;36mraise_from\u001b[1;34m(value, from_value)\u001b[0m\n",
      "\u001b[1;31mInvalidArgumentError\u001b[0m: Tried to expand dim index 3 for tensor with 2 dimensions. [Op:ExpandDims]"
     ]
    }
   ],
   "source": [
    "# 记录预测正确的数量，总样本数量\n",
    "x = tf.convert_to_tensor(x, dtype=tf.float32)/255. #转换为张量\n",
    "y = tf.convert_to_tensor(y, dtype=tf.int32)\n",
    "train_dataset = tf.data.Dataset.from_tensor_slices((x, y))\n",
    "correct, total = 0,0\n",
    "for x,y in train_dataset: # 遍历所有训练集样本\n",
    "    # 插入通道维度，=>[b,28,28,1]\n",
    "    print(x.shape)\n",
    "    x = tf.expand_dims(x,axis=3)\n",
    "    # 前向计算，获得10类别的预测分布，[b, 784] => [b, 10]\n",
    "    out = network(x)\n",
    "    # 真实的流程时先经过softmax，再argmax\n",
    "    # 但是由于softmax不改变元素的大小相对关系，故省去\n",
    "    pred = tf.argmax(out, axis=-1)  \n",
    "    y = tf.cast(y, tf.int64)\n",
    "    # 统计预测正确数量\n",
    "    correct += float(tf.reduce_sum(tf.cast(tf.equal(pred, y),tf.float32)))\n",
    "    # 统计预测样本总数\n",
    "    total += x.shape[0]\n",
    "# 计算准确率\n",
    "print('test acc:', correct/total)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### CIFAR10 与 VGG13 实战\n",
    "CIFAR10 数据集由加拿大 Canadian Institute For Advanced Research 发布，它包含了飞\n",
    "机、汽车、鸟、猫等共 10 大类物体的彩色图片，每个种类收集了 6000 张32 × 32大小图\n",
    "片，共 6 万张图片。其中 5 万张作为训练数据集，1 万张作为测试数据集。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 下载数据集\n",
    "import tensorflow as tf\n",
    "from tensorflow.keras import  datasets\n",
    "(x, y),(x_test, y_test) = datasets.cifar10.load_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((50000, 1), (10000, 1))"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.shape, y_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "#删除y的一个维度\n",
    "y = tf.squeeze(y, axis=1)\n",
    "y_test = tf.squeeze(y_test, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#打印训练集和测试集形状\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
